Bri*_*ian 4 dns connectivity docker server ubuntu-22.04
我从 Strato 租了一台 VPS Linux VC4-8 服务器,想在上面部署一些 Docker 容器。不幸的是,部署的容器无法访问互联网或无法解析 DNS。因此,我无法像RUN apk update
构建过程中那样运行命令。
我已经尝试了各种解决方案,但不幸的是没有成功。以下是我已经阅读和尝试过的一些主题:
https://superuser.com/questions/1130898/no-internet-connection-inside-docker-containers
https://forums.docker.com/t/no-internet-access-in-the-docker-containers/108223
https://askubuntu.com/questions/1445229/no-network-access-from-within-docker-container
以下是我的问题的示例,从完全干净的服务器(Ubuntu 22.04)开始:
ping 8.8.8.8或ping google.com完美运行(在主机上)
使用官方说明安装 Docker (使用 apt 存储库安装)
运行docker pull alpine并docker run --rm -it alpine:latest
连接到 alpine 容器
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C
--- 8.8.8.8 ping statistics ---
30 packets transmitted, 0 packets received, 100% packet loss
Run Code Online (Sandbox Code Playgroud)
/ # ping google.com
ping: bad address 'google.com'
Run Code Online (Sandbox Code Playgroud)
我还在另一台服务器(来自 Hetzner)上尝试了这些步骤,一切正常。
这些文件/etc/resolv.conf在两台服务器上看起来几乎相同。
Strato 服务器上的 resolv.conf:
nameserver 127.0.0.53
options edns0 trust-ad
search .
Run Code Online (Sandbox Code Playgroud)
Hetzner 服务器上的 resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
Run Code Online (Sandbox Code Playgroud)
当我运行时,默认的“桥接”网络看起来完全相同docker inspect bridge。
当我比较两台机器的容器时,docker inspect <container name>一切看起来都一样。仅CgroupnsMode属性设置为host运行示例和privateStrato 服务器(但我不确定这是否是连接方面的问题)。
如果我使用该--network host选项启动容器,我可以成功设置容器并从容器内部访问互联网,但之后我的 Django 容器找不到 Postgres 容器。我还认为这不是执行此操作的首选方法。
有谁知道我在 Strato 服务器上使用 Docker 时遇到这些问题的原因是什么?
我真的不知道还能尝试什么。
预先感谢您的任何帮助!
br,布莱恩
小智 5
来自docker论坛:https://forums.docker.com/t/docker-bridge-networking-does-not-work-in-ubuntu-22-04/136326/6
问题是netplan,ubuntu 22.04使用netplan通过DHCP来寻址ip。需要修改文件 /etc/netplan/50-cloud-init.yaml 并在 * 前面添加 en :
Run Code Online (Sandbox Code Playgroud)network: ethernets: all: dhcp4: true dhcp6: true match: name: 'en*' renderer: networkd version: 2这将强制 netplan 仅在接口 en* 上使用 DHCP,并且 docker 接口为 docker0
接下来应用配置并重新启动网络:
Run Code Online (Sandbox Code Playgroud)netplan apply sudo systemctl restart systemd-networkd #Docker need to be restarted to request a new ip sudo systemctl restart docker
在 ubuntu 22.04 上为我的 Strato V-Server 工作。
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |