分享

docker容器互联的两种方式

xioaxu790 发表于 2015-2-3 19:58:48 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 17814
问题导读
1、docker容器互联有哪些方式?
2、如何通过容器方式互联?
3、各有什么优缺点?






link方式
通过link方式创建容器,然后我们可以使用被link容器的别名进行访问。
从而解除应用对IP的依赖。
不幸的是,link方式只能解决单机容器间的互联。多机情况下,容器的互联需要其他的方式。
  1. [root@localhost ~]# docker run -i -t   mysql:latest /bin/bash
  2. root@7afad07a05b0:/usr/local/mysql# ip addr
  3. 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 79: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
  10.     link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
  11.     inet 172.17.0.4/16 scope global eth0
  12.        valid_lft forever preferred_lft forever
  13.     inet6 fe80::42:acff:fe11:4/64 scope link
  14.        valid_lft forever preferred_lft forever
  15.       
  16. [root@localhost ~]# docker run -i -t --link=sad_bardeen:sql  mysql:latest /bin/bash
  17. root@931c7ab8135e:/usr/local/mysql# ip addr
  18. 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN
  19.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  20.     inet 127.0.0.1/8 scope host lo
  21.        valid_lft forever preferred_lft forever
  22.     inet6 ::1/128 scope host
  23.        valid_lft forever preferred_lft forever
  24. 81: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
  25.     link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
  26.     inet 172.17.0.5/16 scope global eth0
  27.        valid_lft forever preferred_lft forever
  28.     inet6 fe80::42:acff:fe11:5/64 scope link
  29.        valid_lft forever preferred_lft forever
  30. root@931c7ab8135e:/usr/local/mysql# ping sql
  31. PING sql (172.17.0.4): 48 data bytes
  32. 56 bytes from 172.17.0.4: icmp_seq=0 ttl=64 time=0.114 ms
  33. ###可以看出来,加了一个静态dns
  34. root@931c7ab8135e:/usr/local/mysql# cat /etc/hosts
  35. 172.17.0.5      931c7ab8135e
  36. 127.0.0.1       localhost
  37. ::1     localhost ip6-localhost ip6-loopback
  38. fe00::0 ip6-localnet
  39. ff00::0 ip6-mcastprefix
  40. ff02::1 ip6-allnodes
  41. ff02::2 ip6-allrouters
  42. 172.17.0.4      sql
复制代码


通过容器方式互联

如上面所说,link只适用于一台主机。
两台主机,docker官方推荐了如下方式连接两个容器。
以下以wordpress+mysql的服务为例。部署在两台机器上的wordpress和mysql通过一对ambassador进行连接。
  1. wordpress(in vm1)--link-->ambassador1(in vm1)----socat--->ambassador2(in vm2)--link--->mysql(in vm2)
复制代码


启动mysql:
  1. sudo docker run -d --name mysql mysql
复制代码


启动ambassador1:
  1. sudo docker run -d --link mysql:mysql --name ambassador1 -p 3306:3306 ambassador  
复制代码


启动ambassador2:
  1. sudo docker run -d --name ambassador2 --expose 3306 -e MYSQL_PORT_3306_TCP=tcp://x.x.x.x:3306 ambassador  
复制代码


启动wordpress:
  1. sudo docker run -i -t --rm --link ambassador2:mysql wordpress
复制代码






###########################
本文转载自:追寻神迹


已有(1)人评论

跳转到指定楼层
QQo0oBIQ 发表于 2015-2-4 10:48:14
公司的复苏的放松放松地方
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条