0%

docker实践08:容器间通信-Links方式

启动redis

容器间连接的大多数场景都是应用服务连接数据仓库。创建连接时的关键是容器名字。给被连接的容器起个友好的名字会让连接变得简单。

运行一个redis,命名成:redis-server。这个redis容器就是我们的数据源容器

1
docker run -d --name redis-server redis

创建连接

启动一个容器并连接一个数据源容器需要使用的语句是:*-link <container-name|id>:*

别名用来配置应用程序容器是如何调用数据源的配置信息的,当更改到其他环境的时候,就不需要再修改配置信息了。

连接如何工作

这个例子中,我们使用Alpine容器连接到redis-server(别名命名成了redis)。

连接被创建时,docker会做两件事。

一,docker会基于连接,向容器中创建一些环境变量。根据这些环境变量可以根据给定的名字获取到一些信息,比如端口号,ip地址。

通过env命令可以输出所有的环境变量。

1
docker run --link redis-server:redis alpine env

二,docker会将容器的Host文件更新3个连接到数据源容器的名字,源名字,别名和hash-id。可以使用cat /etc/hosts来查看。

1
docker run --link redis-server:redis alpine cat /etc/hosts

例子

连接建立之后,可以ping数据源容器。

1
docker run --link redis-server:redis alpine ping -c 1 redis

连接到应用

连接创建之后,应用容器就可以连接到redis了。

1
docker run -d -p 3000:3000 --link redis-server:redis katacoda/redis-node-docker-example

连接到redis-cli

使用下面的命令可以启动一个redis-cli容器,并通过别名连接到redis服务容器。

1
docker run -it --link redis-server:redis redis redis-cli -h redis

使用redis的命令查看redis(比如:KEYS *),quit命令用于退出cli。

欢迎关注我的其它发布渠道