有四种不同的选项会影响容器守护进程的服务名称(容器的主机名称)。
1、-h HOSTNAME 或者--hostname=HOSTNAME
设置容器的主机名,仅本机可见(应该用途不大,因为容器内通讯可以通过 localhost
访问)。这种方式是写到/etc/hostname,以及/etc/hosts 文件中,作为容器主机 IP 的别名,并
且将显示在容器的 bash 中(格式如:[root@a1d1291ffd08 /]#)。不过这种方式设置的主机名
将不容易被容器之外可见。这将不会出现在 docker ps 或者其他的容器的/etc/hosts 文件中。
2、--link=CONTAINER_NAME:ALIAS(通过这种方式,让两个容器之间可以通讯。其
中 CONTAINER_NAME 标识已经启动的容器的名字,在本容器中,需要通过其别名访问该
已经启动的容器)
使用这个选项去 run 一个容器将在此容器的/etc/hosts 文件中增加一个主机名 ALIAS(别
名),这个主机名是名为 CONTAINER_NAME 的容器的 IP 地址的别名。这使得新容器的内
部进程可以访问主机名为 ALIAS 的容器而不用知道它的 IP。
--link=关于这个选项的详细讨论请看:Communication between containers.
例子:
1、启动 DB 服务器
#docker run --name=mysql_server -d -P kongxx/mysql_server
2、启动应用服务器 1
#docker run --name=mysql_client1 --link=mysql_server:db -t -i kongxx/mysql_client \
/usr/bin/mysql -h db -u root –pletmein
3:启动应用服务器 2
#docker run --name=mysql_client2 --link=mysql_server:db -t -i \
kongxx/mysql_client /usr/bin/mysql -h db -u root –pletmein
3、--dns=IP_ADDRESS
设置 DNS 服务器的 IP 地址,写入到容器的/etc/resolv.conf 文件中。当容器中的进程尝
试访问不在 /etc/hosts 文件中的主机 A 时,容器将以 53 端口(DNS 缺省端口) 连接到
IP_ADDRESS 这个 DNS 服务器去搜寻主机 A 的 IP 地址。
问题探讨(需要实验):
a) 通过--link,可以实现同一个宿主机上的所有容器(除了上例中的 DB 服务器无法添