Docker容器无法访问网络。

3
我已经从Strato租了一台VPS Linux VC4-8服务器,并希望在上面部署几个Docker容器。 不幸的是,部署的容器无法访问互联网或解析DNS。 因此,在构建过程中无法运行像RUN apk update这样的命令。
我已经尝试了各种解决方案,但不幸的是都没有成功。以下是我已经阅读和尝试过的一些讨论帖子:

以下是一个从完全干净的服务器(Ubuntu 22.04)开始的问题示例:

  1. ping 8.8.8.8ping google.com在主机上运行得非常顺畅。

  2. 按照官方说明(使用apt存储库安装)安装Docker。

  3. 运行docker pull alpinedocker run --rm -it alpine:latest

  4. 连接到alpine容器。

    1. 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
      
    2. / # ping google.com
      ping: bad address 'google.com'
      
我还在另一台服务器(来自Hetzner)上尝试了这些步骤,那里一切正常。
/etc/resolv.conf这样的文件在两台服务器上看起来几乎一样。
Strato服务器上的resolv.conf:
nameserver 127.0.0.53 
options edns0 trust-ad 
search .

Hetzner服务器上的resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad

默认的“bridge”网络在我运行docker inspect bridge时看起来完全一样。 当我用docker inspect <container name>比较两台机器上的容器时,一切看起来都一样。只有正在运行的示例上的CgroupnsMode属性设置为host,而Strato服务器上的设置为private(但我不确定这是否与连接有关)。
如果我使用--network host选项启动容器,我可以成功设置容器,并且还可以从容器内部访问互联网,但此后我的Django容器无法找到Postgres容器。我也认为这不是首选的方法。
有人知道我在Strato服务器上遇到Docker问题的原因吗? 我真的不知道还能尝试什么。
提前感谢任何帮助!
敬上,Brian

我有同样的问题。我认为这是Ubuntu 22.04和Docker的问题...希望有人能找到这个问题的原因。 - Flo
1个回答

4
从Docker论坛上来的:https://forums.docker.com/t/docker-bridge-networking-does-not-work-in-ubuntu-22-04/136326/6

The problem is netplan, ubuntu 22.04 use netplan to adress ip via DHCP. You need to modify the file /etc/netplan/50-cloud-init.yaml and add en in front of the * :

network:
    ethernets:
        all:
            dhcp4: true
            dhcp6: true
            match:
                name: 'en*'
    renderer: networkd
    version: 2

this will force netplan to use DHCP only on interface en* and the docker interface is docker0

next apply the configuration and restart network:

netplan apply
sudo systemctl restart systemd-networkd

#Docker need to be restarted to request a new ip
sudo systemctl restart docker

适用于我的Strato V-Server,使用的是Ubuntu 22.04。


谢谢!那就是原因! - Flo
谢谢!那就是原因! - undefined
非常感谢您的帮助!在调整文件后,一切都运行得很完美。 - Brian
非常感谢您的帮助!在调整文件后,一切都运行得非常完美。 - undefined
我好像在应用 netplan 后失去了与我的远程服务器的连接:) - Lauri Elias
没有知识,你所做的事情是得不到任何帮助的。如果我猜得没错的话,你的网络设备名称不是以"en"开头,像是enp2s0这样的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接