Networking 运行Docker容器时主机上没有网络

Networking 运行Docker容器时主机上没有网络,networking,docker,host,wifi,Networking,Docker,Host,Wifi,我在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-d

我在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         

可能是您的docker主机网络设置与docker不匹配。尝试一下Docker文档中提供的:

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

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

[Network]
...
IPForward=kernel
...
此配置允许按预期从容器进行IP转发


还可以尝试一下Arch Linux wiki中有关Docker的部分:

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


#cat>/etc/systemd/network/ipforward.network可能是您的docker主机网络设置与docker不太匹配。尝试一下Docker文档中提供的:

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

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

[Network]
...
IPForward=kernel
...
此配置允许按预期从容器进行IP转发


还可以尝试一下Arch Linux wiki中有关Docker的部分:

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


#cat>/etc/systemd/network/ipforward.network解决方案是使用以下内容创建或编辑/etc/connman/main.conf:

[General]
NetworkInterfaceBlacklist=vmnet,vboxnet,virbr,ifb,docker,veth,eth,wlan
重新启动康曼


正如。

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

[General]
NetworkInterfaceBlacklist=vmnet,vboxnet,virbr,ifb,docker,veth,eth,wlan
重新启动康曼


正如。

除了詹金斯之外,其他图像也会发生这种情况吗?docker版本的输出是什么?
docker info
的输出是什么?@thomasleveli用输出更新了问题。我也是Docker的新手。然而,如果我指定的端口不是80,比如
dockerrun-p 81.
,那么我就有了网络。实际上在任何情况下都没有网络。请显示
iptables-L
的输出,无论是否运行docker容器。并尝试运行docker-net=host jenkins
假设docker主机上没有使用端口8383
,请尝试运行docker-p 8383:8080 jenkins除此之外的其他图像是否也会发生这种情况?docker版本的输出是什么?
docker info
的输出是什么?@thomasleveli用输出更新了问题。我也是Docker的新手。然而,如果我指定的端口不是80,比如
dockerrun-p 81.
,那么我就有了网络。实际上在任何情况下都没有网络。请显示
iptables-L
的输出,无论是否运行docker容器。同时尝试一下docker run--net=host jenkins假设docker主机上没有使用端口
8383
,尝试一下docker run-p 8383:8080 jenkins我以前试过这些,但这次也试过了,没有用。我可能遗漏了一些东西,并且没有调试工具。有吗?无论如何,谢谢你的努力!!它感觉这与您的网络转发规则有关,但我对网络和Arch Linux不够了解,无法在这里提供任何进一步的帮助。我建议使用相同版本的Arch Linux启动一个新的虚拟机,并按照Arch Linux的Docker官方文档在其上安装Docker,以查看是否重现该问题。如果没有问题,请将该VM的网络设置与服务器的网络设置进行比较。希望这些差异能突出问题的根源。我以前试过这些,但这次也试过了,但没用。我可能遗漏了一些东西,并且没有调试工具。有吗?无论如何,谢谢你的努力!!它感觉这与您的网络转发规则有关,但我对网络和Arch Linux不够了解,无法在这里提供任何进一步的帮助。我建议使用相同版本的Arch Linux启动一个新的虚拟机,并按照Arch Linux的Docker官方文档在其上安装Docker,以查看是否重现该问题。如果没有问题,请将该VM的网络设置与服务器的网络设置进行比较。希望这些差异将突出问题的根源。