- CKA/CKAD應試教程:從Docker到Kubernetes完全攻略
- 段超飛編著
- 1103字
- 2025-03-17 18:51:33
1.10 容器互聯
【必知必會】配置多個容器如何互相連接?
有時我們需要多個應用共同工作才能對外提供服務,比如使用WordPress和MySQL兩個應用才能搭建博客。WordPress需要連接到MySQL上,這樣就需要兩個容器,此時就需要將WordPress容器連接到MySQL容器上。
1.10.1 方法1:通過容器IP的方式訪問
前面在實戰練習里已經創建了一個名稱為db的容器,IP為172.17.0.2且里面有一個數據庫叫作blog。

下面使用WordPress鏡像創建一個容器,此容器需要連接到MySQL上。
這個容器需要使用的變量如下。
(1)WORDPRESS_DB_HOST:用來指定MySQL服務器的地址。
(2)WORDPRESS_DB_USER:用來指定登錄MySQL的用戶名。
(3)WORDPRESS_DB_PASSWORD:用來指定登錄MySQL的密碼。
(4)WORDPRESS_DB_DATABASE:用來指定需要的數據庫。
第1步 創建WordPress容器,并把端口發布出去,使得外界的主機能訪問。

這里通過變量WORDPRESS_DB_HOST指定了MySQL服務器的地址。
第2步 在瀏覽器里訪問頁面。
在地址欄里輸入192.168.26.100,如圖1-21所示。
選擇“Chinese”選項,單擊“Continue”按鈕,進入圖1-22所示的頁面。

圖1-21 訪問WordPress容器(1)

圖1-22 訪問WordPress容器(2)
并沒有要求輸入數據庫的信息,因為它已經可以自動連接到數據庫了。
第3步 刪除blog這個容器。

這種方法有個問題,就是如果db容器出問題而重新生成時,IP可能會發生改變,那么WordPress就連接不上了。
上述命令在vms101上用nerdctl執行,只要把關鍵字docker換成nerdctl即可。
1.10.2 方法2:使用link的方式
在創建容器時,--link選項的用法如下。

后續需要引用此容器名時,直接寫別名即可。
這種--link用法在nerdctl里無法使用,所以下面的練習只在vms100上操作。
第1步 再次創建WordPress容器。

這里創建名稱為blog的容器,使用--link連接到名稱為db的容器,起別名為mysqlxx,在WORDPRESS_DB_HOST這個變量里不再寫db的IP了,而是直接寫別名mysqlxx,此時blog正常運行,且能訪問到數據庫,如圖1-23所示。

圖1-23 訪問WordPress容器(3)
注意
--link里容器的別名是可以隨意起的。
但是,這個命令還是過于復雜,可以進一步簡化。剛才介紹了WordPress鏡像所使用的變量,現在來看它們的默認值。
(1)WORDPRESS_DB_HOST:默認連接到別名為mysql的容器。
(2)WORDPRESS_DB_USER:默認為root。
(3)WORDPRESS_DB_PASSWORD:默認為MySQL容器里的root所使用的密碼。
(4)WORDPRESS_DB_DATABAASE:默認為名稱為wordpress的庫。
所以,如果我們創建MySQL容器,指定一個數據庫是wordpress而不是blog,則上面的選項都可以不寫。
第2步 刪除db和blog容器。

第3步 創建一個MySQL容器。

在這個MySQL容器里,通過變量MYSQL_DATABASE創建一個名稱為wordpress的庫。在WordPress容器里如果沒有指定使用MySQL里的哪個庫,則默認使用的是名稱為wordpress的庫。
第4步 創建一個WordPress容器,所有變量均使用默認值。

這里別名使用的是mysql,WORDPRESS_DB_HOST默認會連接別名為mysql的容器,這里創建WordPress容器的選項很少,因為都是使用的默認值。
(1)WORDPRESS_DB_USER:使用的是root用戶。
(2)WORDPRESS_DB_PASSWORD:使用的是別名為mysql這個容器里MYSQL_ROOT_PASSWORD的值。
(3)WORDPRESS_DB_NAME:默認使用wordpress庫。
在瀏覽器里測試,如圖1-23所示。
雖然在創建WordPress容器時沒有指定太多MySQL的信息,但依然能跳過數據庫的設置,說明WordPress容器是正確連接到數據庫了。
自行刪除這兩個容器。
- PHP動態網站程序設計
- Python編程自學手冊
- Oracle 12c中文版數據庫管理、應用與開發實踐教程 (清華電腦學堂)
- concrete5 Cookbook
- Oracle JDeveloper 11gR2 Cookbook
- MongoDB,Express,Angular,and Node.js Fundamentals
- ElasticSearch Cookbook(Second Edition)
- 人工智能算法(卷1):基礎算法
- QPanda量子計算編程
- Python+Office:輕松實現Python辦公自動化
- 快樂編程:青少年思維訓練
- Python應用開發技術
- Learn Linux Quickly
- Java EE程序設計與開發實踐教程
- 區塊鏈:技術與場景