容器间通信

容器在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务。所以,我们要考虑的问题时如何建立两个容器间通信。

容器的连接(linking)

系统是除了端口映射外,另一种跟容器中应用交互的方式。
该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

首先我们先创建一个容器(这里我只是用作示范,没有使用官方示例的镜像,所谓但数据容器内并没有提供数据服务,官方例子我举出来也没啥意思)

创建数据访问容器db:

  1. $ sudo docker run -idt --name=db centos
  2. 600886c7c69dc4979bdfee19d82331879d71835f794db110eb3b5ea3c164bd30

使用—link=name:alias name就是要访问的目标机器,alias就是自定的别名

  1. $ sudo docker run -it --name=web --link=db:test_link centos
  2. [root@8d92293a65e9 /]# cat /etc/hosts
  3. 172.17.0.12 8d92293a65e9
  4. 127.0.0.1 localhost
  5. ::1 localhost ip6-localhost ip6-loopback
  6. fe00::0 ip6-localnet
  7. ff00::0 ip6-mcastprefix
  8. ff02::1 ip6-allnodes
  9. ff02::2 ip6-allrouters
  10. 172.17.0.11 test_link 600886c7c69d db

我们看到容器内的hosts 内多了一条信息

  1. 172.17.0.11 test_link 600886c7c69d db

这就意味着我们可以访问到db容器进行通信