国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

iptables - docker無法指定容器相連
伊謝爾倫
伊謝爾倫 2017-04-27 09:01:47
0
3
891

docker配置:

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

先起一個(gè)web主機(jī):
docker run -d --name web -p 8080:80 php-fpm:5.4

再起一個(gè)test主機(jī)測試連接:
docker run -dit --name test --link web:web blackhole/ubuntu:0.1 bash

查看iptables filter的表:

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

進(jìn)入test容器內(nèi)部:

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

指定容器相連的三個(gè)條件:--icc=fasle --iptables=true --link上面都已經(jīng)滿足了。為了防止意外,再第一步之前還執(zhí)行了iptables -F清除

問題出在哪里呢?或者說可能出現(xiàn)在哪里呢

伊謝爾倫
伊謝爾倫

小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。

全部回復(fù)(3)
洪濤

解決了:
docker的link參數(shù)的本質(zhì)是在iptables和容器的hosts添加規(guī)則,從上面可以看到規(guī)則已經(jīng)添加進(jìn)去了,但是為什么不行呢。因?yàn)橹暗奈?,在寫Dockerfile的時(shí)候忘記加EXPOSE參數(shù)(因?yàn)槲乙恢庇X得這個(gè)命令沒用),實(shí)際上,EXPOSE是會開放端口的,他不是單純的方便-P命令的使用及給開發(fā)人員看的。iptables的ACCEPT規(guī)則是基于端口的,而我在EXPOSE里沒有寫,會導(dǎo)致link沒有任何用處。而一般的web容器或者db容器開放的端口是3306和80還有443端口,可是一個(gè)都沒開放,導(dǎo)致link連接后無法ping、curl通,而且ping走的也不是80、3306、443端口。所以即使成功了,也不會ping通。

滿天的星座

讓這些容器都在同一橋接網(wǎng)絡(luò)下

大家講道理

docker啟動容器時(shí)默認(rèn)為其創(chuàng)建獨(dú)立網(wǎng)絡(luò),可以通過docker network ls 查看當(dāng)前的網(wǎng)絡(luò)。當(dāng)使用link時(shí),需要將兩者置于同一網(wǎng)絡(luò)。
如先起容器A

docker run A;

再起容器B

docker run --link A:a --net A_default B
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板