開始使用 Docker 和 Compose,在 Azure 中定義和執行多容器應用程式

透過 Compose,您可以使用簡單的文字檔來定義包含多個 Docker 容器的應用程式。 接著,您會在單一命令中啟動應用程式,以執行所有作業來部署已定義的環境。 例如,本文說明如何在Ubuntu VM上快速設定具有後端MariaDB SQL 資料庫的 WordPress 部落格。 您也可以使用 Compose 來設定更複雜的應用程式。

本文上次使用 Azure Cloud Shell 和 Azure CLI 2.0.58 版在 2019 年 2 月 14 日進行測試。

使用 Azure CLI 建立 Docker 主機

安裝最新的 Azure CLI ,並使用 az login 登入 Azure 帳戶。

首先,使用 az group create 為您的 Docker 環境建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myDockerGroup --location eastus

建立名為 cloud-init.txt的 檔案,並貼上下列組態。 輸入 sensible-editor cloud-init.txt 以建立檔案,並查看可用的編輯器清單。

#include https://get.docker.com

現在使用 az vm create 建立 VM。 使用 --custom-data 參數以傳入 cloud-init 組態檔。 如果您將檔案儲存於目前工作目錄之外的位置,請提供 cloud-init.txt 組態的完整路徑。 下列範例會建立名為 myDockerVM 的 VM,並將埠 80 開啟至 Web 流量。

az vm create \
    --resource-group myDockerGroup \
    --name myDockerVM \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
az vm open-port --port 80 \
    --resource-group myDockerGroup \
	--name myDockerVM

建立 VM 需要幾分鐘的時間、要安裝的套件,以及啟動應用程式。 在 Azure CLI 將您返回提示字元之後,背景作業會繼續執行。 建立 VM 之後,請記下 Azure CLI 所顯示的 publicIpAddress。

安裝 Compose

透過 SSH 連線到新的 Docker 主機 VM。 提供您自己的IP位址。

ssh azureuser@10.10.111.11

在 VM 上安裝 Compose。

sudo apt install docker-compose

建立docker-compose.yml組態檔

建立 docker-compose.yml 組態檔,以定義要在 VM 上執行的 Docker 容器。 檔案會指定要在每個容器上執行的映像、必要的環境變數和相依性、埠,以及容器之間的連結。 如需 yml 檔案語法的詳細資訊,請參閱 撰寫檔案參考。

建立 docker-compose.yml 檔案。 使用您慣用的文字編輯器,將一些數據新增至檔案。 下列範例會建立檔案,並提示您 sensible-editor 挑選您想要使用的編輯器。

sensible-editor docker-compose.yml

將下列範例貼到您的 Docker Compose 檔案中。 此組態會使用 DockerHub 登錄 中的映像來安裝 WordPress(開放原始碼部落格和內容管理系統),以及連結的後端 MariaDB SQL 資料庫。 輸入您自己的 MYSQL_ROOT_PASSWORD。

wordpress:
  image: wordpress
  links:
    - db:mysql
  ports:
    - 80:80

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: <your password>

使用 Compose 啟動容器

在與docker-compose.yml檔案相同的目錄中,執行下列命令(視您的環境而定,您可能需要使用 sudo執行 docker-compose ):

sudo docker-compose up -d

此命令會啟動 docker-compose.yml 中指定的 Docker 容器。 此步驟需要一兩分鐘才能完成。 您會看到類似下列的輸出:

Creating wordpress_db_1...
Creating wordpress_wordpress_1...
...

若要確認容器已啟動,請輸入 sudo docker-compose ps。 您應該會看到如下的內容:

        Name                       Command               State         Ports
-----------------------------------------------------------------------------------
azureuser_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp
azureuser_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp

您現在可以直接在埠 80 上的 VM 上連線到 WordPress。 開啟網頁瀏覽器,然後輸入 VM 的 IP 位址名稱。 您現在應該會看到 WordPress 開始畫面,您可以在其中完成安裝並開始使用應用程式。

WordPress 開始畫面

後續步驟