首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker不能指定容器连接

docker不能指定容器连接
EN

Stack Overflow用户
提问于 2017-02-10 04:21:01
回答 1查看 89关注 0票数 1

码头配置:root@ubuntu> ps -ef | grep docker root xxxxx /usr/bin/dockerd -H fd:// -b=br0 --icc=false --iptables=true

启动“web”容器:

docker run -d --name web -p 8080:80 php-fpm:5.4

启动“测试”容器:

docker run -dit --name test --link web:web blackhole/ubuntu:0.1 bash

iptables过滤器:

代码语言:javascript
复制
root@ubuntu> sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (0 references)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            192.168.100.2        tcp dpt:80
ACCEPT     tcp  --  192.168.100.3        192.168.100.2        tcp dpt:80
ACCEPT     tcp  --  192.168.100.2        192.168.100.3        tcp spt:80
ACCEPT     tcp  --  192.168.100.3        192.168.100.2        tcp dpt:443
ACCEPT     tcp  --  192.168.100.2        192.168.100.3        tcp spt:443
ACCEPT     tcp  --  192.168.100.3        192.168.100.2        tcp dpt:22
ACCEPT     tcp  --  192.168.100.2        192.168.100.3        tcp spt:22

在“测试”容器中:

代码语言:javascript
复制
sudo docker exec -it test bash
root@00585b9efea8:/# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.100.2   web 2cec3235f5fa
192.168.100.3   00585b9efea8
root@00585b9efea8:/# ping web
PING web (192.168.100.2): 56 data bytes
^C--- web ping statistics ---
12 packets transmitted, 0 packets received, 100% packet loss
root@00585b9efea8:/# ping 192.168.100.2
PING 192.168.100.2 (192.168.100.2): 56 data bytes
^C--- 192.168.100.2 ping statistics ---
12 packets transmitted, 0 packets received, 100% packet loss
root@00585b9efea8:/# curl web
^C
root@00585b9efea8:/# curl http://192.168.100.2:80
^C

指定容器的三个条件:

-icc=筋膜 -iptables=真 -链接

没问题,为什么不?

ubuntu版本:16.04.2LTS停靠版本:.13.1内核版本:4.9.0-040900-泛型

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 04:36:27

link选项是已弃用。对于基于DNS的服务发现,您应该创建一个新的桥接网络,并指定--net让码头容器加入这个网络:

创建新的桥接网络:

代码语言:javascript
复制
docker network create --subnet=192.168.177.0/24 --gateway=192.168.177.1 www

在此网络上创建两个容器:

代码语言:javascript
复制
docker run -d --name=nginx1 --net=www nginx:1-alpine
docker run -d --name=nginx2 --net=www nginx:1-alpine

试着彼此点名:

代码语言:javascript
复制
docker exec -it nginx1 /bin/sh
/ # ping nginx2
PING nginx2 (192.168.177.3): 56 data bytes
64 bytes from 192.168.177.3: seq=0 ttl=64 time=0.113 ms
64 bytes from 192.168.177.3: seq=1 ttl=64 time=0.123 ms

--- nginx2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.113/0.118/0.123 ms

可以通过执行docker network inspect www在此网络上查看容器。

更多信息可以在这里找到:https://docs.docker.com/engine/userguide/networking/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42151464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档