记录一次docker部署java占用宿主机ip由InetAddress.getLocalHost()引起报Name or service not known

本文介绍了一种在CentOS 7环境下使用Docker部署应用时遇到的InetAddress.getLocalHost()报错问题及其解决方法。该错误是由于主机名与IP地址不匹配导致,通过修改/etc/hosts文件使主机名与IP地址对应一致来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

InetAddress.getLocalHost()报错Name or service not known

解决办法及原因

本人是因docker占用宿主机网络引起,使用docker端口无影响,环境是centos7系统 ,部署jar应用docker镜像时启动报错,启动初始化时InetAddress.getLocalHost()报错.
在这里插入图片描述

原因

InetAddress.getLocalHost()获取本机主机名与IP 对应不起来

在这里插入图片以上描述
以上看到主机名和IP 不对应

解决办法

查看 cat /etc/hostname

显示 zhangjin.novalocal
查看 cat /etc/hosts
显示 127.0.0.1 localhost …
以上主机名与IP不一致,修改hosts hostname随意
最终实现 ip 名称一致即可.
在这里插入图片描述
在这里插入图片描述

最终启动成功!!! OK 啦

### 解决Docker部署中的Hostname解析问题 当遇到`'Name or service not known'`错误时,这通常意味着容器内的DNS配置存在问题。为了有效解决问题,可以从以下几个方面入手: #### 修改主机的/etc/hosts文件 如果目标是在特定环境中让某些名称解析到固定的IP地址,则可以在宿主机上的`/etc/hosts`文件中添加相应的条目[^1]。 ```bash echo "192.168.1.100 myservice.example.com" | sudo tee -a /etc/hosts ``` #### 配置自定义DNS服务器 通过设置`--dns`参数来指定要使用的DNS服务器,在启动容器的时候加入此选项可以确保容器内部能够正确访问外部网络资源。 ```bash docker run --dns=8.8.8.8 ... ``` #### 使用Docker内置特性优化域名解析 对于更复杂的场景,比如服务发现机制下的动态环境变量注入或是利用Consul这样的工具实现自动化管理,也可以考虑采用官方推荐的方式——即借助于`dockerd`守护进程级别的配置变更或Linking Containers Together的功能。 针对DevStack准备阶段可能引发的相关问题,考虑到OpenStack Nova-Docker组件集成的需求特殊性,建议按照如下方法调整本地开发环境配置[^2]: ```bash export INSTALLDIR={Devstack_Parent_Dir} cd /opt/stack/nova-docker ./contrib/devstack/prepare_devstack.sh cat <<EOL >>local.conf [[local|localrc]] HOSTNAME=localhost.localdomain PUBLIC_INTERFACE=enp0s3 FLOATING_RANGE="172.24.4.224/28" Q_FLOATING_ALLOCATION_POOL=start=172.24.4.226,end=172.24.4.230 FIXED_RANGE=10.11.12.0/24 NETWORK_GATEWAY=10.11.12.1 FLAT_INTERFACE=${PUBLIC_INTERFACE} disable_service n-net enable_service q-svc enable_service q-agt enable_service q-dhcp enable_service q-l3 enable_service q-meta enable_service neutron NOVA_USE_QUANTUM_API=v2 VIRT_DRIVER=novadocker.virt.docker.DockerDriver LIBVIRT_TYPE=qemu IMAGE_URLS+=,http://cdn.download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img RECLONE=yes FORCE yes EOL ``` 上述脚本片段展示了如何修改`local.conf`以适应不同类型的网络接口和浮动IP范围设定,并启用了必要的Neutron服务以及指定了虚拟化驱动程序为Docker Driver。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值