生活随笔
收集整理的這篇文章主要介紹了
Docker使用Link在容器之间建立连接
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文鏈接:Docker使用Link在容器之間建立連接
?
在使用Docker的時候我們會常常碰到這么一種應用,就是我需要兩個或多個容器,其中某些容器需要使用另外一些容器提供的服務。比如這么一種情況:我們需要一個容器來提供MySQL的數據庫服務,而另外兩個容器作為客戶端來連接使用mysql數據庫服務。下面我們就來看看docker是怎樣通過Link來實現這種功能的。
?
1. 這里我們首先創建兩個容器image,一個用來模擬mysql數據庫,另外一個使用mysql的client來模擬一些使用mysql服務的應用,這種應用可以是任何PHP,Python,Java等的應用。
?
1.1 先創建一個mysql_server目錄并在其下創建一個Dockerfile文件,內容如下
[plain]?view plain?copy ?print?
FROM?centos:centos6??MAINTAINER?Fanbin?Kong?"kongxx@hotmail.com"?????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"]??
?
然后根據Dockerfile來創建image
?
?
[plain]?view plain?copy ?print?
sudo?docker?build?-t?kongxx/mysql_server?.??
?
?
?
1.2 創建一個mysql_client目錄并在其下創建一個Dockerfile文件,內容如下
?
[plain]?view plain?copy ?print?
FROM?centos:centos6??MAINTAINER?Fanbin?Kong?"kongxx@hotmail.com"?????RUN?yum?install?-y?mysql??
然后根據Dockerfile來創建image
?
?
[plain]?view plain?copy ?print?
sudo?docker?build?-t?kongxx/mysql_client?.??
1.3 創建完image之后,我們可以使用下面命令來查看結果
?
?
[plain]?view plain?copy ?print?
$?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. 第二步是根據image來創建我們的應用場景
?
2.1 首先創建提供mysql數據庫服務的容器
?
[plain]?view plain?copy ?print?
sudo?docker?run?--name=mysql_server?-d?-P?kongxx/mysql_server??
2.2 分別創建兩個使用上一步創建出來mysql數據庫服務的容器
?
第一個應用容器
?
[plain]?view plain?copy ?print?
sudo?docker?run?--name=mysql_client1?--link=mysql_server:db?-t?-i?kongxx/mysql_client?/usr/bin/mysql?-h?db?-u?root?-pletmein??
?
?
?
第二個應用容器
?
[plain]?view plain?copy ?print?
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,這樣在這兩個容器里就可以使用“db”來作為提供mysql數據庫服務的機器名。所以在最后啟動參數里我們使用的是“/usr/bin/mysql -h db -u root -pletmein”來連接mysql數據庫的。
2.3 運行完上面兩個命令,我們就會在創建了兩個mysql的client的容器,此時我們可以使用下面命令來查看狀態
[plain]?view plain?copy ?print?
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_client/db,mysql_client2/db,mysql_server”,這就說明mysql_client1和mysql_client2都和db建立的連接。
?
總結
以上是生活随笔為你收集整理的Docker使用Link在容器之间建立连接的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。