容器間建立連線案例 mysql

2021-07-13 21:48:50 字數 3080 閱讀 5877

容器簡介:

容器的連線(linking)系統是除了埠對映外,另一種跟容器中應用互動的方式。該系統會在源和接收容器之間建立乙個隧道,接收容器可以看到源容器指定的資訊。

自定義容器命名:

1、連線系統依據容器的名稱來執行。因此,首先需要自定義乙個好記的容器命名。

2、雖然當建立容器的時候,系統缺省會分配乙個名字。

自定義命名容器有2個好處:

1、自定義的命名,比較好記,比如乙個web應用容器我們可以給它起名叫web

2、當要連線其他容器時候,可以作為乙個有用的參考點,比如連線web容器到db容器

案例描述:

建立乙個mysqlserver容器,連個mysqlclient容器,實現容器間的互聯訪問。

1、基礎映象環境搭建

1.1 先建立乙個mysql_server目錄並在其下建立乙個dockerfile檔案,內容如下

from  ubuntu  

maintainer  zhouwenhua "[email protected]"  

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 "[email protected]"  

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建立的連線。--此處結果與實際不相符,有待版本間差異考證。

多表連線 案例講解

多表連線,案例講解 1.查詢部門編號 3的女神的男朋友資訊,如果有則列出詳情,如果沒有,用null填充 外連線 select b.name b.id bo.from beauty b left outer join boys bo on b.boyfriend id bo.id where b.id...

SqlServer資料庫遠端連線案例教程

在sqlserver服務端電腦開啟sqlserver managerment studio管理工具,首先通過windows身份驗證登入sqlserver 登入成功之後,右鍵開啟屬性,在安全性選項卡勾選sql server和windows身份認證模式,在連線選項卡勾選允許遠端連線到此伺服器,如下圖 然...

理解Docker容器連線實現容器間通訊

容器連線 link 系統是除了埠對映外,另一種跟容器中應用互動的方式。其會在源容器 db 與接收容器 web 之間穿件乙個隧道,接收容器可以看到源容器指定的資訊。其實乙個可以將具體的容器連線到一起來進行通訊的抽象層。容器的命名 docker的連線系統會根據容器的名稱來進行連線。name用來自定義名稱...