【发布时间】:2018-04-05 14:54:27
【问题描述】:
我正在尝试配置 docker 守护程序,以便我可以从我启动的 docker 容器内部连接到它..
所以我将 /etc/docker/daemon.json 更改为
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
所以我通过 docker 桥连接到它。但是当我重新启动 docker 时,我得到了
netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3728/mysqld
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 24253/redis-server
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3756/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3634/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3756/nginx
tcp6 0 0 :::8010 :::* LISTEN 4230/apache2
tcp6 0 0 :::9200 :::* LISTEN 26824/java
tcp6 0 0 :::9300 :::* LISTEN 26824/java
tcp6 0 0 :::22 :::* LISTEN 3634/sshd
tcp6 0 0 :::2375 :::* LISTEN 1955/dockerd
所以首先我虽然问题是它正在侦听 ipv6 而不是 ipv4。并根据 Make docker use IPv4 for port binding 它应该仍然有效,但它没有..当我尝试时
telnet 172.17.0.1(docker host) 2375
连接失败
telnet 172.17.0.1(docker host) 80
有效。如何连接到主机上运行的 docker?我在 Ubuntu 14.04.5 docker 版本上运行:17.06.2-ce
【问题讨论】:
-
您使用的是网桥 IP 而不是 HOST IP。
ifconfig的输出是什么? -
/ # ifconfig eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU: 1500 度量:1 RX 数据包:14 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:0 错误:0 丢弃:0 超限:0 运营商:0 冲突:0 txqueuelen:0 RX 字节:1108 (1.0 KiB)发送字节:0 (0.0 B)
-
我虽然容器 ip 是 172.17.0.2 并且默认路由是主机 ip 172.17.0.1.. 我可以使用它的 ip 172.17.0.1 连接到主机上运行的端口。我可以连接到与 ::: 相对的其他正在监听 0.0.0.0 的服务
标签: docker networking tcp ip