Networking Docker容器在localhost上可见,但在具有自定义桥0的其他主机上不可见 在RHEL 7.1上安装新的Docker 1.7.0

Networking Docker容器在localhost上可见,但在具有自定义桥0的其他主机上不可见 在RHEL 7.1上安装新的Docker 1.7.0,networking,docker,ipv6,iptables,connection-timeout,Networking,Docker,Ipv6,Iptables,Connection Timeout,因此,我安装了最新的Docker 1.7.0,我无法让这个新服务器服务于外部世界 [root@pppdc9prd8ok eea.docker.jenkins]# uname -a Linux pppdc9prd8ok 3.10.0-229.4.2.el7.x86_64 #1 SMP Fri Apr 24 15:26:38 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux [root@pppdc9prd8ok eea.docker.jenkins]# docker

因此,我安装了最新的Docker 1.7.0,我无法让这个新服务器服务于外部世界

[root@pppdc9prd8ok eea.docker.jenkins]# uname -a
Linux pppdc9prd8ok 3.10.0-229.4.2.el7.x86_64 #1 SMP Fri Apr 24 15:26:38 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@pppdc9prd8ok eea.docker.jenkins]# docker --version
Docker version 1.7.0, build 0baf609
[root@pppdc9prd8ok eea.docker.jenkins]# docker info
Containers: 10
Images: 110
Storage Driver: devicemapper
 Pool Name: docker-253:0-4374531-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 4.398 GB
 Data Space Total: 107.4 GB
 Data Space Available: 99.18 GB
 Metadata Space Used: 7.029 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.14 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /app_local/var-lib-docker/devicemapper/devicemapper/data
 Metadata loop file: /app_local/var-lib-docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.4.2.el7.x86_64
Operating System: Red Hat Enterprise Linux
CPUs: 4
Total Memory: 15.52 GiB
Name: pppdc9prd8ok
ID: 3M2F:QYY7:Z5DI:YTVI:RAV4:SHPM:C3RC:CWIY:FHFA:ZYAS:SNHG:CMTY
使用bridge0而不是docker0设置Docker 由于我们的内部网络发生冲突,我遵循Docker文档中的高级网络主题

我使用docker-compose.yml在端口80上启动了一个docker容器,如下所示:

[root@pppdc9prd8ok eea.docker.jenkins]# docker ps
CONTAINER ID        IMAGE                   COMMAND                CREATED             STATUS              PORTS                                            NAMES
a9f5637552ba        eeacms/jenkins:master   "/usr/local/bin/jenk   4 seconds ago       Up 4 seconds        0.0.0.0:50000->50000/tcp, 0.0.0.0:80->8080/tcp   eeadockerjenkins_master_1
c6fcac33b044        yorkshirekev/postfix    "/bin/bash -c '/star   7 seconds ago       Up 6 seconds                                                         eeadockerjenkins_postfix_1
199ad3d48dfe        eeacms/jenkins:slave    "/bin/sh -c /bin/jen   5 minutes ago       Up 47 seconds                                                        eeadockerjenkins_worker_1
3a8057253b7d        eeacms/jenkins:slave    "/bin/sh -c /bin/jen   5 minutes ago       Up 47 seconds                                                        eeadockerjenkins_worker_2
fced8be92258        eeacms/jenkins:slave    "/bin/sh -c /bin/jen   5 minutes ago       Up 46 seconds                                                        eeadockerjenkins_worker_3
7cb4cfabd3c2        mongo                   "/entrypoint.sh mong   2 weeks ago         Up 20 seconds       0.0.0.0:27017->27017/tcp                         mongodb-dotci
无法从Internet访问端口80上的服务器 从“ps”打印的内容来看,在端口80上运行的服务非常好,绑定到端口80上的全ip地址0.0.0.0。但是,尝试从其他位置访问此计算机时,我无法执行此操作

Marcello-New2015:~ mdesales$ curl http://docker.corp.intuit.net/
curl: (7) Failed to connect to docker.corp.intuit.net port 80: Operation timed out
存在来自本地主机的内部路由 奇怪,因为我已经检查过容器是否可以从内部访问并且它正在工作

[root@pppdc9prd8ok eea.docker.jenkins]# curl localhost | grep html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 26791  100 26791    0     0   110k      0 --:    <!DOCTYPE html><html><head resURL="/static/9ebca566">
--:-- --:--:-- --:--:--  110k
iptables显示了将呼叫正确转发到接口的规则

ifconfig和iptables正确显示了所有接口 不确定要去哪里:(帮助…

简短回答:安装“bridge0”时删除“docker0”桥接器! 好吧,我越来越多地挖掘,发现docker0的存在以某种方式干扰了网络

答案很长:逐步验证 我首先验证了bridge0实际上正在使用,但事实并非如此

[root@pppdc9prd8ok eea.docker.jenkins]# systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─http-proxy.conf
   Active: active (running) since Fri 2015-07-10 07:23:14 UTC; 30min ago
     Docs: https://docs.docker.com
 Main PID: 18034 (docker)
   CGroup: /system.slice/docker.service
           ├─18034 /usr/bin/docker -d -H fd://
           ├─18271 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 27017 -container-ip 192.168.4.5 -container-port 27017
           ├─18490 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 50000 -container-ip 192.168.4.8 -container-port 50000
           └─18498 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 192.168.4.8 -container-port 8080

Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.124143415Z" level=info msg="GET /v1.18/containers/json?all=0&limit=-1&trunc_cmd=0&filters=%7B%22label%22%3A+%5...5D%7D&size=0"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.126520912Z" level=info msg="GET /v1.18/containers/c6fcac33b04480970aa3606f86e5ed9571a320b6ff5cdc8ecdf81edfb416720a/json"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.128362232Z" level=info msg="GET /v1.18/containers/json?all=1&limit=-1&trunc_cmd=0&filters=%7B%22label%22%3A+%5...5D%7D&size=0"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.130940471Z" level=info msg="POST /v1.18/containers/create?name=eeadockerjenkins_master_1"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.299140678Z" level=info msg="GET /v1.18/containers/a9f5637552bad2d608f838cdb2a263452f5e98962c45ebe759ed0904211d6962/json"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.301413002Z" level=info msg="POST /v1.18/containers/a9f5637552bad2d608f838cdb2a263452f5e98962c45ebe759ed0904211d6962/start"
Jul 10 07:23:57 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:57.504799799Z" level=info msg="DELETE /v1.18/containers/0665b35b4f1df8e8d098a429ae4a057a91c36cc341d33f710b00cc3c4...alse&v=False"
Jul 10 07:23:58 pppdc9prd8ok docker[18034]: time="2015-07-10T07:23:58.657884948Z" level=info msg="GET /v1.18/containers/json?all=0&limit=-1&trunc_cmd=0&filters=%7B%22label%22%3A+%5...5D%7D&size=0"
Jul 10 07:24:01 pppdc9prd8ok docker[18034]: time="2015-07-10T07:24:01.793020916Z" level=info msg="GET /v1.19/containers/json"
Jul 10 07:43:25 pppdc9prd8ok docker[18034]: time="2015-07-10T07:43:25.850272360Z" level=info msg="GET /v1.19/info"
Hint: Some lines were ellipsized, use -l to show in full.
结果表明,RHEL7.1在安装Docker时没有指向环境变量,而是使用服务upstart

[root@pppdc9prd8ok eea.docker.jenkins]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker
#
# Other arguments to pass to the docker daemon process
# These will be parsed by the sysv initscript and appended
# to the arguments list passed to docker -d

other_args="-b=bridge0"
我必须在以下文件中添加行EnvironmentFile=-/etc/sysconfig/docker,并将环境变量添加到“docker-d”命令中:

重新启动docker服务现在会在系统中显示docker0参数

[root@pppdc9prd8ok eea.docker.jenkins]# systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─http-proxy.conf
   Active: active (running) since Fri 2015-07-10 07:23:14 UTC; 30min ago
     Docs: https://docs.docker.com
 Main PID: 18034 (docker)
   CGroup: /system.slice/docker.service
           ├─18034 /usr/bin/docker -d -b=bridge0 -H fd://
           ├─18271 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 27017 -container-ip 192.168.4.5 -container-port 27017
           ├─18490 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 50000 -container-ip 192.168.4.8 -container-port 50000
           └─18498 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 192.168.4.8 -container-port 8080
然而,服务仍然不起作用…我最后一次检查并让它起作用的是移除了桥“docker0”。它起作用了

[root@pppdc9prd8ok eea.docker.jenkins]# ip link set docker0 down
[root@pppdc9prd8ok eea.docker.jenkins]# brctl delbr docker0
[root@pppdc9prd8ok eea.docker.jenkins]# ifconfig
bridge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.1  netmask 255.255.252.0  broadcast 192.168.7.255
        ether 16:1b:b8:42:5c:9e  txqueuelen 0  (Ethernet)
        RX packets 6550  bytes 6542448 (6.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6133  bytes 6585941 (6.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.132.52.146  netmask 255.255.252.0  broadcast 10.132.55.255
        ether 00:50:56:01:0e:ba  txqueuelen 1000  (Ethernet)
        RX packets 114644  bytes 11944039 (11.3 MiB)
        RX errors 0  dropped 626  overruns 0  frame 0
        TX packets 19671  bytes 2808015 (2.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@pppdc9prd8ok eea.docker.jenkins]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker
#
# Other arguments to pass to the docker daemon process
# These will be parsed by the sysv initscript and appended
# to the arguments list passed to docker -d

other_args="-b=bridge0"
[root@pppdc9prd8ok eea.docker.jenkins]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker -d $other_args -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
[root@pppdc9prd8ok eea.docker.jenkins]# systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─http-proxy.conf
   Active: active (running) since Fri 2015-07-10 07:23:14 UTC; 30min ago
     Docs: https://docs.docker.com
 Main PID: 18034 (docker)
   CGroup: /system.slice/docker.service
           ├─18034 /usr/bin/docker -d -b=bridge0 -H fd://
           ├─18271 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 27017 -container-ip 192.168.4.5 -container-port 27017
           ├─18490 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 50000 -container-ip 192.168.4.8 -container-port 50000
           └─18498 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 192.168.4.8 -container-port 8080
[root@pppdc9prd8ok eea.docker.jenkins]# ip link set docker0 down
[root@pppdc9prd8ok eea.docker.jenkins]# brctl delbr docker0
[root@pppdc9prd8ok eea.docker.jenkins]# ifconfig
bridge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.1  netmask 255.255.252.0  broadcast 192.168.7.255
        ether 16:1b:b8:42:5c:9e  txqueuelen 0  (Ethernet)
        RX packets 6550  bytes 6542448 (6.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6133  bytes 6585941 (6.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.132.52.146  netmask 255.255.252.0  broadcast 10.132.55.255
        ether 00:50:56:01:0e:ba  txqueuelen 1000  (Ethernet)
        RX packets 114644  bytes 11944039 (11.3 MiB)
        RX errors 0  dropped 626  overruns 0  frame 0
        TX packets 19671  bytes 2808015 (2.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Marcello-New2015:~ mdesales$ curl http://docker.corp.intuit.net/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 26804  100 26804    0     0  60458      0 --:--:-- --:--:-- --:--:-- 60505