让我们使用Docker的链接功能来进行容器之间的通信

2017年03年04日更新:
由于docker run的 –link功能已经过时,本文章似乎已经完成了它的任务。

以MongoDB为例。

让我们启动MongoDB服务器容器和MongoDB客户端容器,然后尝试从客户端连接到守护进程。

准备

安装Docker,并获取MongoDB映像。

docker pull mongo

我們將檢查此映像中是否同時包含了守護程序(/usr/bin/mongod)和客戶端程序(/usr/bin/mongo)。

Mongo客户端

[vagrant@localhost ~]$ docker run -it mongo  /usr/bin/mongo --version
MongoDB shell version: 3.0.0

Mongo服务器

[vagrant@localhost ~]$ docker run -it mongo  /usr/bin/mongod --version
db version v3.0.0
git version: a841fd6394365954886924a35076691b4d149168
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

MongoDBサーバコンテナを起動する

在一个名为mongoserver的容器中启动Mongo服务器。

$ docker run -d  --name mongoserver mongo

启动MongoDB客户端容器

使用mongoc容器名称启动Mongo客户端。
同时,使用–link选项将通信对方(Mongo服务器)的主机名注入。

$ docker run -it --link mongoserver:mongoserver mongo bash
root@f986fdc303bb:/#

让我们来查看mongoc容器内的/etc/hosts文件。

root@f986fdc303bb:/# cat /etc/hosts
172.17.0.45     f986fdc303bb
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.44     mongoserver

172.17.0.41 出现了一行名为 mongoserver 的内容。
这是由 –link 功能提供的主机名。

让我们向 mongoserver 发送一次 ping。

root@f986fdc303bb:/# ping mongoserver
PING mongoserver (172.17.0.44): 48 data bytes
56 bytes from 172.17.0.44: icmp_seq=0 ttl=64 time=0.097 ms
56 bytes from 172.17.0.44: icmp_seq=1 ttl=64 time=0.090 ms
56 bytes from 172.17.0.44: icmp_seq=2 ttl=64 time=0.213 ms

网络已连接!

让我们也查看环境变量吧。

root@f986fdc303bb:/# env
MONGOSERVER_ENV_MONGO_VERSION=3.0.0
HOSTNAME=f986fdc303bb
MONGO_VERSION=3.0.0
TERM=xterm
MONGOSERVER_PORT_27017_TCP=tcp://172.17.0.44:27017
MONGOSERVER_PORT=tcp://172.17.0.44:27017
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
MONGOSERVER_ENV_MONGO_MAJOR=3.0
MONGOSERVER_NAME=/nostalgic_bell/mongoserver
HOME=/root
SHLVL=1
MONGO_MAJOR=3.0
MONGOSERVER_PORT_27017_TCP_PORT=27017
MONGOSERVER_PORT_27017_TCP_PROTO=tcp
MONGOSERVER_PORT_27017_TCP_ADDR=172.17.0.44
_=/usr/bin/env

有几个环境变量是以MONGOSERVER_开头进行设置的。

那么,让我们从Mongo客户端使用Mongo协议连接到Mongo服务器。

root@f986fdc303bb:/# mongo --host mongoserver
MongoDB shell version: 3.0.0
connecting to: mongoserver:27017/test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2015-03-20T02:15:15.071+0000 I CONTROL  [initandlisten]
2015-03-20T02:15:15.071+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-03-20T02:15:15.071+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-03-20T02:15:15.071+0000 I CONTROL  [initandlisten]

连接成功了!

完成後,將文件保存到集合中,然後確認文件是否正確保存在服務器容器中,確實如此。

请提供更多上下文以便更好地理解您的需求。

    • http://deeeet.com/writing/2014/12/01/docker-link-pattern/

 

    • http://docs.docker.com/userguide/dockerlinks/

 

    https://registry.hub.docker.com/_/mongo/
广告
将在 10 秒后关闭
bannerAds