容器间通信

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

容器的连接(linking)

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

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

创建数据访问容器db:

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

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

$ sudo docker run -it --name=web --link=db:test_link centos
[root@8d92293a65e9 /]# cat /etc/hosts
172.17.0.12    8d92293a65e9
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.11    test_link 600886c7c69d db

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

172.17.0.11    test_link 600886c7c69d db

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