linkを使って二つの容器の間に接続を作る.
5769 ワード
Dockerを使う時、私達はよくこのような応用に出会います.つまり、二つ以上の容器が必要です.中にはいくつかの容器が別の容器で提供されるサービスを使う必要があります.例えば、mysqlのデータベースサービスを提供する容器が必要です.他の二つの容器はクライアントとしてMsqlデータベースサービスを接続します.DockerがどのようにLinkを通してこの機能を実現しているかを見てみましょう.
1.ここではまず二つの容器イメージを作成し、一つはmysqlデータベースをシミュレートするために、もう一つはmysqlのclientを使ってmysqlサービスの応用を模擬します.この応用はどんなphp、python、javaなどの応用でもいいです.
1.1まずmysqlを作成します.serverディレクトリとその下にDocerfileファイルを作成します.内容は以下の通りです.
FROM centos:centos 6 MAINTAINER Fabin Kong"[email protected]「 RUN yum install-y mysql-server mysql RUN/etc/init.d/mysqld start&&\ mysql-e「grant all priveges on*.***to'root'@'%identifed by'letmein'」&&\ mysql-e「grant all priveges on*.***to'root'@'local host'identifed by'letmein'」&&\ mysql-u root-pletmein-e「show databases」 EXPOSE 3306 CMD[\/usr/bin/mysqld_safe]
sudocker build-t kongxx/mysql_server.
1.2 mysqlを作成する.clientディレクトリを作成し、その下にDocerfileファイルを作成します.内容は以下の通りです.
FROM centos:centos 6 MAINTAINER Fabin Kong"[email protected]「 RUN yum install-y mysql
sudocker build-t kongxx/mysql_client.
$sudocker imags grep kongxx kongxx/mysql_client latest a 31 f 22 f 6 fc 5 2 houss ago 303.7 MB コミュxx/mysqlserver latest 3 b 9 b 08 c 8 dda 4 2 houss ago 353.3 MB
2.第二ステップはイメージに基づいて、私たちのアプリケーションシーンを作成します.
2.1まずmysqlデータベースサービスを提供するコンテナを作成する
sudocker run--name=mysql_server-d-P kongxx/mysql_server
最初のアプリケーションコンテナ
sudocker run--name=mysql_client 1--link=mysql_server:db-t-i kongxx/mysql_client/usr/bin/mysql-h db-u root-pletmein
第二の応用容器
sudocker run--name=mysql_client 2--link=mysql_server:db-t-i kongxx/mysql_client/usr/bin/mysql-h db-u root-pletmein
ここで注意したいのですが、「–link=mysql_server:db」というパラメータは、Docker容器には「mysql server」という容器が必要であり、別名をdbといいます.この二つの容器にはmysqlデータベースサービスを提供するマシン名として「db」が使えます.最後の起動パラメータでは、mysqlデータベースに接続するために「/usr/bin/mysql-h db-u root-pletmein」を使います.
2.3上記二つの命令を実行したら、私達は2つのmysqlのclientの容器を作成します.この時は下の命令を使って状態を確認します.
sudocker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ac 0 c 76 c 627 c 0 コミュxx/mysqlclient:latest /usr/bin/mysql-h db 10 seconds ago Up 9 seconds mysqlclient 2 763 c 4825722 d コミュxx/mysqlclient:latest /usr/bin/mysql-h db 41 minutes ago Up 40 minutes mysqlclient 32 f 7839 f 7 e 9 d コミュxx/mysqlserver:latest /usr/bin/mysqld_safe About an hour ago Up About an hour 0.0.00:49153->3306/tcp mysqlclient 1/db,mysql_client 2/db,mysql_server
本論文はhttp://blog.csdn.net/kongxx/article/details/38676917から回転する.
これらのステップを終えた時、必要な答えが出ませんでした.間違ったと思いましたが、命令を実行しました. docker ps--no-truncの時にmysql_が現れました.client 1/db,mysql_client 2/db,mysql_client 3/db,mysql_server
1.ここではまず二つの容器イメージを作成し、一つはmysqlデータベースをシミュレートするために、もう一つはmysqlのclientを使ってmysqlサービスの応用を模擬します.この応用はどんなphp、python、javaなどの応用でもいいです.
1.1まずmysqlを作成します.serverディレクトリとその下にDocerfileファイルを作成します.内容は以下の通りです.
FROM centos:centos 6
FROM centos:centos6
MAINTAINER Fanbin Kong "[email protected]"
RUN yum install -y mysql-server mysql
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"]
そしてDocerfileによってイメージを作成します.sudocker build-t kongxx/mysql_server.
sudo docker build -t kongxx/mysql_server .
1.2 mysqlを作成する.clientディレクトリを作成し、その下にDocerfileファイルを作成します.内容は以下の通りです.
FROM centos:centos 6
FROM centos:centos6
MAINTAINER Fanbin Kong "[email protected]"
RUN yum install -y mysql
そしてDocerfileによってイメージを作成します.sudocker build-t kongxx/mysql_client.
sudo docker build -t kongxx/mysql_client .
1.3イメージを作成したら、次のコマンドで結果を確認できます.$sudocker imags grep kongxx
$ sudo docker images | grep kongxx
kongxx/mysql_client latest aa31f22f6fc5 2 hours ago 303.7 MB
kongxx/mysql_server latest 3b9b08c8dda4 2 hours ago 353.3 MB
2.第二ステップはイメージに基づいて、私たちのアプリケーションシーンを作成します.
2.1まずmysqlデータベースサービスを提供するコンテナを作成する
sudocker run--name=mysql_server-d-P kongxx/mysql_server
sudo docker run --name=mysql_server -d -P kongxx/mysql_server
2.2それぞれ前の段階を使ってmysqlデータベースサービスを作成した二つのコンテナを作成します.最初のアプリケーションコンテナ
sudocker run--name=mysql_client 1--link=mysql_server:db-t-i kongxx/mysql_client/usr/bin/mysql-h db-u root-pletmein
sudo docker run --name=mysql_client1 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein
第二の応用容器
sudocker run--name=mysql_client 2--link=mysql_server:db-t-i kongxx/mysql_client/usr/bin/mysql-h db-u root-pletmein
sudo docker run --name=mysql_client2 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein
ここで注意したいのですが、「–link=mysql_server:db」というパラメータは、Docker容器には「mysql server」という容器が必要であり、別名をdbといいます.この二つの容器にはmysqlデータベースサービスを提供するマシン名として「db」が使えます.最後の起動パラメータでは、mysqlデータベースに接続するために「/usr/bin/mysql-h db-u root-pletmein」を使います.
2.3上記二つの命令を実行したら、私達は2つのmysqlのclientの容器を作成します.この時は下の命令を使って状態を確認します.
sudocker ps
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac0c76c627c0 kongxx/mysql_client:latest /usr/bin/mysql -h db 10 seconds ago Up 9 seconds mysql_client2
763c4825722d kongxx/mysql_client:latest /usr/bin/mysql -h db 41 minutes ago Up 40 minutes mysql_client
32f7839f7e9d kongxx/mysql_server:latest /usr/bin/mysqld_safe About an hour ago Up About an hour 0.0.0.0:49153->3306/tcp mysql_client1/db,mysql_client2/db,mysql_server
ここで最後の一行、つまりmysqlです.server容器の「NAMES」列の内容「mysql uclient/db、mysql uclient 2/db、mysql_server」について説明します.client 1とmysql_client 2ともdbとの接続です.本論文はhttp://blog.csdn.net/kongxx/article/details/38676917から回転する.
これらのステップを終えた時、必要な答えが出ませんでした.間違ったと思いましたが、命令を実行しました. docker ps--no-truncの時にmysql_が現れました.client 1/db,mysql_client 2/db,mysql_client 3/db,mysql_server