原文地址:https://docs.docker.com/userguide/dockerlinks/
接上文
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#
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021