【问题标题】:No network on host machine when running a Docker container运行 Docker 容器时主机上没有网络
【发布时间】:2016-01-10 20:22:12
【问题描述】:

我在 Arch Linux 机器上,使用此命令运行容器时主机上没有网络:

docker run jenkins

停止 Docker 后,网络又恢复了。 欢迎提出任何建议。

编辑:

似乎当使用 -p 选项运行并提供 80 以外的其他端口时,网络可以使用几分钟,然后再次丢失。

**> docker version**

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.5.1
 Git commit:   a34a1d5-dirty
 Built:        Sun Nov 22 00:15:15 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.5.1
 Git commit:   a34a1d5-dirty
 Built:        Sun Nov 22 00:15:15 UTC 2015
 OS/Arch:      linux/amd64

**> docker info**

Containers: 31
Images: 57
Server Version: 1.9.1
Storage Driver: devicemapper
 Pool Name: docker-8:5-548039-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: 
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 3.584 GB
 Data Space Total: 107.4 GB
 Data Space Available: 7.741 GB
 Metadata Space Used: 7.496 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.14 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.113 (2015-12-05)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.2.5-1-ARCH
Operating System: Arch Linux (containerized)
CPUs: 4
Total Memory: 7.709 GiB
Name: arch
ID: OF5Y:H7O4:M4R6:GCF6:NSEU:LNG6:K7NV:FJDM:DUVI:6KOM:LTRB:EUPP

> iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         

【问题讨论】:

  • 除了jenkins 之外的其他图像是否也会发生这种情况? docker version 的输出是什么? docker info 的输出是什么?
  • @Thomasleveil 我用输出更新了问题。我也是 Docker 的新手。但是,似乎如果我指定 80 以外的端口,例如 docker run.. -p 81 ..,那么我就有了网络。
  • 其实无论如何都没有网络。
  • 请显示iptables -L 的输出,无论是否运行任何 docker 容器。也可以试试docker run --net=host jenkins
  • 假设端口8383没有在docker主机上使用,试试docker run -p 8383:8080 jenkins

标签: networking docker host wifi


【解决方案1】:

可能是您的 docker 主机网络设置不适合 Docker。试试你可以在 Docker 文档中找到的Arch Linux specific instructions regarding networking

如果您使用 systemd-network 版本 220 或更高版本手动配置网络,则容器 从 Docker 开始可能无法访问您的网络。从版本 220 开始,转发 给定网络 (net.ipv4.conf.<interface>.forwarding) 的设置默认为 off。这个设置 防止IP转发。它还与启用 net.ipv4.conf.all.forwarding 的 Docker 冲突 在容器内设置。

要解决此问题,请在 Docker 主机上编辑 /etc/systemd/network/ 中的 <interface>.network 文件,添加 > 以下块:

[Network]
...
IPForward=kernel
...

此配置允许按预期从容器进行 IP 转发。


也可以试试 Arch Linux wiki 中关于 Docker 的 docker0 Bridge gets no IP / no internet access in containers 部分:

Docker 自己启用 IP 转发,但默认情况下 systemd 会覆盖相应的 sysctl 设置。下列 禁用此覆盖(适用于所有接口):

# cat > /etc/systemd/network/ipforward.network <<EOF
[Network]
IPForward=ipv4
EOF

# cat > /etc/systemd/network/99-docker.conf <<EOF
net.ipv4.ip_forward = 1
EOF

# sysctl -w net.ipv4.ip_forward=1

最后重启 systemd-networkd 和 docker 服务。

【讨论】:

  • 我以前试过这些,但这次也试过了,但没有帮助。我可能遗漏了一些东西,并且没有工具可以调试。有吗?无论如何感谢您的努力!
  • 感觉这与您的网络转发规则有关,但我对网络和 Arch Linux 的了解还不够,无法在这里提供任何进一步的帮助。我建议使用相同版本的 Arch Linux 启动一个新的虚拟机,并按照 Arch Linux 的官方 Docker 文档在其上安装 Docker,看看你是否重现了这个问题。如果您没有遇到问题,请将该 VM 的网络设置与您的服务器的网络设置进行比较。希望这些差异能突出问题的根源。
【解决方案2】:

解决方案是使用以下内容创建或编辑 /etc/connman/main.conf:

[General]
NetworkInterfaceBlacklist=vmnet,vboxnet,virbr,ifb,docker,veth,eth,wlan

然后重新启动 connman。

作为described here

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 2020-07-08
    • 1970-01-01
    • 2016-02-27
    • 2022-01-24
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多