Can't resolve host name of xxx LXC container问题解决

本文记录了一次远程服务器(Ubuntu)上启动LXC容器遇到的问题及解决过程。主要问题是容器启动时报错“Can't resolve hostname”。通过检查hostname配置和/etc/hosts文件未发现异常,最终定位问题与环境变量DISPLAY有关。在lxc脚本中,DISPLAY变量被用于获取hostname,而远程登录后该变量值为'linduo:0'。解决办法是修改DISPLAY变量为':0'。
Can’t resolve host name of xxx LXC container问题解决
  • 某日,telnet远程服务器(Ubuntu),启动lxc容器时报错。导致容器启动失败。
 Can't resolve host name of linduo
  • 奇怪的是,远程服务器上并没有将hostname配置为linduo
  • 进行了如下步骤排查
# 正常
hostname
# 查看/etc/hosts文件,正常
cat /etc/hosts
  • 最后与环境变量DISPLAY有关。lxc脚本中,使用了该变量获取hostname。
telnet xxxx
# 登录后输出DISPLAY变量
echo $DISPLAY
# 输出结果为
linduo:0
  • 关于DISPLAY变量:简单来讲可以理解,远程登录服务器后,将图形显示到该值指定的client端。关于该环境变量的详细解释,网上有许多资料。
  • 解决:修改DISPLAY变量为如下即可
export DISPLAY=:0
在使用 Docker 容器运行 `yum install` 时,出现 `can not resolve host name` 错误通常与容器的 DNS 解析配置有关。这可能是由于容器无法访问外部网络或 DNS 配置不正确导致的。 ### 检查并修复容器网络和 DNS 设置 1. **确认宿主机 DNS 可用性** 确保宿主机上的 `/etc/resolv.conf` 文件中包含有效的 DNS 服务器地址,例如: ``` nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 2. **启动容器时指定 DNS** 使用 `--dns` 参数在运行容器时指定 DNS 服务器,例如: ```bash docker run --dns=8.8.8.8 -it centos:7 /bin/bash ``` 3. **检查容器内部的 DNS 配置** 进入容器后查看 `/etc/resolv.conf` 文件内容,确认是否包含正确的 DNS 地址。 4. **配置 Docker 默认 DNS** 如果希望所有容器默认使用特定 DNS,可以在 Docker 守护进程配置文件(如 `/etc/docker/daemon.json`)中添加 DNS 设置: ```json { "dns": ["8.8.8.8", "8.8.4.4"] } ``` 然后重启 Docker 服务以应用更改: ```bash systemctl restart docker ``` 5. **确保容器具备网络访问权限** 某些情况下,Docker 的网络模式可能被限制为 `none` 或 `host` 以外的自定义网络,需确保容器具有访问外部网络的能力。 6. **测试网络连接** 在容器内尝试 ping 或 curl 外部域名,验证网络连通性和 DNS 解析能力: ```bash ping -c 4 google.com curl http://mirrorlist.centos.org ``` 7. **更新 Yum 源配置** 若容器内的 yum 源仍指向不可达的镜像站点,可参考阿里云镜像源进行替换[^1]: ```bash wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache ``` ### 示例:构建一个具备网络解析能力的 CentOS 容器 ```bash # 启动带有自定义 DNS 的容器 docker run --dns=8.8.8.8 -it centos:7 /bin/bash # 在容器内更新软件包缓存 yum clean all yum makecache # 尝试安装软件包 yum install -y net-tools ``` 通过上述方法可以有效解决 Docker 容器中因 DNS 解析失败而导致的 `yum install` 异常问题。确保容器具备良好的网络环境是关键步骤。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值