容器间建立连接案例-mysql

容器简介:
容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
自定义容器命名:
1、连接系统依据容器的名称来执行。因此,首先需要自定义一个好记的容器命名。

2、虽然当创建容器的时候,系统默认会分配一个名字。

自定义命名容器有2个好处:

1、自定义的命名,比较好记,比如一个web应用容器我们可以给它起名叫web
2、当要连接其他容器时候,可以作为一个有用的参考点,比如连接web容器到db容器

案例描述:

 建立一个mysqlserver容器,连个mysqlclient容器,实现容器间的互联访问。

1、基础镜像环境搭建

1.1 先创建一个mysql_server目录并在其下创建一个Dockerfile文件,内容如下

FROM  ubuntu  
MAINTAINER  zhouwenhua "zhouwenhua@163.com"  
RUN apt-get update
RUN apt-get -yq install mysql-server-5.6  
RUN /etc/init.d/mysqld start &&\  
    mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\  
    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\  
    mysql -u root -pletmein -e "show databases;"  
EXPOSE 3306  
CMD ["/usr/bin/mysqld_safe"]  

然后根据Dockerfile来创建image
docker build -t mysql  .  

1.2 创建一个mysql_client目录并在其下创建一个Dockerfile文件,内容如下
FROM  ubuntu
MAINTAINER  zhouwenhua "zhouwenhua@163.com"  
RUN apt-get update
RUN apt-get -yq install mysql-server-5.6  

然后根据Dockerfile来创建image
docker build -t mysql_client .  

1.3 创建完image之后,我们可以使用下面命令来查看结果
$ docker images | grep mysql
mysql_client                latest              42a8eaeb7925        34 minutes ago      543.7 MB
mysql                       latest              3662991f7bc3        24 hours ago        472.6 MB


2. 第二步是根据image来创建我们的应用场景
2.1 首先创建提供mysql数据库服务的容器
docker run --name=mysql_server -d -P mysql 

2.2 分别创建两个使用上一步创建出来mysql数据库服务的容器
第一个应用容器
docker run --name=mysql_client1 --link=mysql_server:db -t -i mysql_client mysql -h db -u root -pzhou
第二个应用容器
docker run --name=mysql_client2 --link=mysql_server:db -t -i mysql_client mysql -h db -u root -pzhou

这里需要特别注意一下“–link=mysql_server:db”,这个参数就是告诉Docker容器需要使用“mysql_server”容器,并将其别名命名为db,这样在这两个容器里就可以使用“db”来作为提供mysql数据库服务的机器名。所以在最后启动参数里我们使用的是“/usr/bin/mysql -h db -u root -pletmein”来连接mysql数据库的。
2.3 运行完上面两个命令,我们就会在创建了两个mysql的client的容器,此时我们可以使用下面命令来查看状态
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
30bd95641a4f        mysql_client        "mysql -h db -u root "   13 minutes ago      Up 13 minutes                                 mysql_client2
3d5b4757fe99        mysql_client        "mysql -h db -u root "   17 minutes ago      Up 16 minutes                                 mysql_client1
27e6aa1485cf        mysql               "/run.sh"                24 minutes ago      Up 24 minutes       0.0.0.0:32773->3306/tcp   mysql_server

这里注意一下最后一行,也就是mysql_server容器的“NAMES”列的内容“mysql_client/db,mysql_client2/db,mysql_server”,这就说明mysql_client1和mysql_client2都和db建立的连接。 --此处结果与实际不相符,有待版本间差异考证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值