docker容器互联
生活随笔
收集整理的這篇文章主要介紹了
docker容器互联
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
link方式
http://blog.csdn.net/halcyonbaby/article/details/42112325
通過link方式創建容器,然后我們可以使用被link容器的別名進行訪問。
從而解除應用對IP的依賴。
不幸的是,link方式只能解決單機容器間的互聯。多機情況下,容器的互聯需要其他的方式。
[root@localhost ~]# docker run -i -t mysql:latest /bin/bash
root@7afad07a05b0:/usr/local/mysql# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
79: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ffinet 172.17.0.4/16 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:acff:fe11:4/64 scope linkvalid_lft forever preferred_lft forever[root@localhost ~]# docker run -i -t --link=sad_bardeen:sql mysql:latest /bin/bash
root@931c7ab8135e:/usr/local/mysql# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
81: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ffinet 172.17.0.5/16 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:acff:fe11:5/64 scope linkvalid_lft forever preferred_lft forever
root@931c7ab8135e:/usr/local/mysql# ping sql
PING sql (172.17.0.4): 48 data bytes
56 bytes from 172.17.0.4: icmp_seq=0 ttl=64 time=0.114 ms
###可以看出來,加了一個靜態dns
root@931c7ab8135e:/usr/local/mysql# cat /etc/hosts
172.17.0.5 931c7ab8135e
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
172.17.0.4 sql
通過容器方式互聯
如上面所說,link只適用于一臺主機。
兩臺主機,docker官方推薦了如下方式連接兩個容器。
以下以wordpress+mysql的服務為例。部署在兩臺機器上的wordpress和mysql通過一對ambassador進行連接。
wordpress(in vm1)--link-->ambassador1(in vm1)----socat--->ambassador2(in vm2)--link--->mysql(in vm2)
啟動mysql:
sudo docker run -d --name mysql mysql
啟動ambassador1:
sudo docker run -d --link mysql:mysql --name ambassador1 -p 3306:3306 ambassador
啟動ambassador2:
sudo docker run -d --name ambassador2 --expose 3306 -e MYSQL_PORT_3306_TCP=tcp://x.x.x.x:3306 ambassador
啟動wordpress:
sudo docker run -i -t --rm --link ambassador2:mysql wordpress
參考:
http://blog.csdn.net/sunset108/article/details/40856957
轉載于:https://www.cnblogs.com/antis/p/5287179.html
總結
以上是生活随笔為你收集整理的docker容器互联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回帖怎么突然需要审核?
- 下一篇: 文件操作(ifstream、ofstre