首页 » 翻译 » Docker » 正文

Docker 入门教程05 关联两个容器 第三部分

原文地址:https://docs.docker.com/userguide/dockerlinks/

接上文

Docker还定义了一个_ENV_,这个参数是记录了源容器启动事Docker的值(博主无能啊,这个没看懂啊,一会再去研习几遍文档)

好,我们来看一下之前的那个例子,我们可以受用env这个命令来查看所有的环境变量

[root@fedora ~]# docker run --rm --name web2 --link db:db training/webapp env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=db5dde136f8c
DB_PORT=tcp://172.17.0.5:5432
DB_PORT_5432_TCP=tcp://172.17.0.5:5432
DB_PORT_5432_TCP_ADDR=172.17.0.5
DB_PORT_5432_TCP_PORT=5432
DB_PORT_5432_TCP_PROTO=tcp
DB_NAME=/web2/db
DB_ENV_PG_VERSION=9.3
HOME=/root
[root@fedora ~]# rpm -qa|grep docker

正如我们之前提到的,所有的变量都是以DB_开头,这个和我们 –link后的第二个db有关,如果我们变成db1,那么所有的变量都会变成DB1_,然后我们的web容器就可以使用这些环境变量来连接我们的db容器,并且,仅仅我们的web容器可以,其他的容器没有看不到db容器

重要
不像我们放在/etc/hosts中,环境变量中的IP地址不会自动更新(如果源容器自动重启了),我们推荐使用/etc/hosts 来解析 我们连接容器的IP地址

我们的环境变量仅仅是为了在容器中第一次获取这些相关值,

更新/etc/hosts
除了环境变量,Docker 增加了一个源容器的入口在/etc/hosts中,下面我们看一个例子

docker run -i -t –rm db:webdb traning/webapp /bin/bash


[root@fedora ~]# docker run -i -t --rm --link db:webdb training/webapp /bin/bash
root@71757257a7d7:/opt/webapp# cat /etc/hosts
172.17.0.8 71757257a7d7
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.5 webdb 6994b57a29db db
root@71757257a7d7:/opt/webapp#

我们看以看到第一行的数据是web这个容器的

然后最后一行,是db容器的相关信息,我们可以直接ping webdb,或者 ping db

(ping 之前先安装apt-get install -yqq inetutils-ping)

当我们重启源容器,/etc/hosts文件会自动更新

docker restart db

然后我们在看一遍


root@71757257a7d7:/opt/webapp# cat /etc/hosts
172.17.0.8 71757257a7d7
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.5 webdb 6994b57a29db db

重启....

root@71757257a7d7:/opt/webapp# cat /etc/hosts
172.17.0.8 71757257a7d7
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.9 webdb 6994b57a29db db
root@71757257a7d7:/opt/webapp#

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)