Docker如何使用link建立容器之间的连接

2020-06-17 06:54:48易采站长站整理

我们在使用Docker的时候,经常可能需要连接到其他的容器,比如:web服务需要连接数据库。按照往常的做法,需要先启动数据库的容器,映射出端口来,然后配置好客户端的容器,再去访问。其实针对这种场景,Docker提供了–link 参数来满足。

这里使用数据库服务器和客户端的例子来介绍下–link的用法。

一 创建容器

这里需要创建MySQL服务端和客户端的容器

MySQL 服务端的Dockerfile:


FROM centos:centos6
MAINTAINER David "xx@xx.com"
RUN yum install -y mysql-server mysql
RUN /etc/init.d/mysqld start
RUN mysql -e "grant all privileges on *.* to 'root'@'%' identified by '1234';"
RUN mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '1234';"
EXPOSE 3306
CMD ["/usr/bin/mysqld"]

MySQL客户端的Dockerfile:


FROM centos:centos6
MAINTAINER David "xx@xx.com"
RUN yum install -y mysql

根据Dockerfile来创建images


David@MacBook-Pro-3 ~$ docker build -t hzc/mysql_server /path/mysql_server/Dockerfile

David@MacBook-Pro-3 ~$ docker build -t hzc/mysql_client /path/mysql_client/Dockerfile

image构建执行结束之后,执行

docker image|greo hzc
,可以看到:


David@MacBook-Pro-3 ~$ docker image|grep hzc
hzc/mysql_client latest 62cfe52e02bf 2 days ago 289 MB
hzc/mysql_server latest 83c64aba0805 2 days ago 377.9 MB

二 启动容器

启动MySQL服务端的容器


David@MacBook-Pro-3 ~$ docker run -d -P --name=mysql_server hzc/mysql_server
David@MacBook-Pro-3 ~$ b5e097fe510d8f258dd82c48a2f6aa4c279e227c4472e42d3e9956ac419ae73c

启动MySQL客户端容器


David@MacBook-Pro-3 ~$ docker run --name=mysql_client1 --link=mysql_server:db -i -t hzc/mysql_client mysql -h db -uroot -p1234

Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

查看进程


David@MacBook-Pro-3 ~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES