容器简介:
容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
自定义容器命名:
1、连接系统依据容器的名称来执行。因此,首先需要自定义一个好记的容器命名。
2、当要连接其他容器时候,可以作为一个有用的参考点,比如连接web容器到db容器
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建立的连接。 --此处结果与实际不相符,有待版本间差异考证。
容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
自定义容器命名:
1、连接系统依据容器的名称来执行。因此,首先需要自定义一个好记的容器命名。
2、虽然当创建容器的时候,系统默认会分配一个名字。
自定义命名容器有2个好处:
1、自定义的命名,比较好记,比如一个web应用容器我们可以给它起名叫web2、当要连接其他容器时候,可以作为一个有用的参考点,比如连接web容器到db容器
案例描述:
建立一个mysqlserver容器,连个mysqlclient容器,实现容器间的互联访问。
1、基础镜像环境搭建
1.1 先创建一个mysql_server目录并在其下创建一个Dockerfile文件,内容如下
FROM ubuntuMAINTAINER 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建立的连接。 --此处结果与实际不相符,有待版本间差异考证。