链接允许容器相互发现并将有关一个容器的信息安全地传输到另一个容器。设置链接时,您在源容器和接收容器之间创建了一个管道。然后,接收者可以访问有关源的选定数据。要创建链接,请使用--link 标志。首先,创建一个新容器,这次是一个包含数据库的容器。
$ docker run -d --name db training/postgres
这将创建一个db从training/postgres 映像调用的新容器,其中包含一个 PostgreSQL 数据库。
现在,您需要删除web之前创建的容器,以便将其替换为链接的容器:
$ docker container rm -f web
现在,创建一个新web容器并将其与您的db容器链接。
$ docker run -d -P --name web --link db:db training/webapp python app.py
这会将新web容器与db您之前创建的容器链接起来。该--link标志采用以下形式:
--link:alias
name我们链接到的容器的名称在哪里,是alias链接名称的别名。该别名很快就会使用。该--link旗还采取以下形式:
--link
在这种情况下,别名与名称匹配。您可以将前面的示例编写为:
$ docker run -d -P --name web --link db training/webapp python app.py
接下来,使用以下命令检查链接的容器docker inspect:
$ docker inspect -f "{{ .HostConfig.Links }}" web
[/db:/web/db]
您可以看到web容器现在已链接到db容器 web/db。这允许它访问有关db容器的信息。
那么链接容器实际上有什么作用呢?您已经了解到链接允许源容器向接收容器提供有关其自身的信息。在我们的示例中,收件人web可以访问有关源 的信息db。为此,Docker 在容器之间创建了一个安全隧道,不需要在容器外部公开任何端口;当我们启动 db容器时,我们没有使用-P或-p标志。这是链接的一大好处:我们不需要向网络公开源容器,这里是 PostgreSQL 数据库。
Docker 通过两种方式向接收容器公开源容器的连接信息:
1.环境变量,
2.更新/etc/hosts文件。