【 Container】使用 Buildx 建構多重系統架構的 Docker 映像檔

【 Container】使用 Buildx 建構多重系統架構的 Docker 映像檔
Photo by David Auinger / Unsplash

內容

  • 學習目標
  • 前置準備作業
  • 流程
  • 於 ARM CPU 的電腦來建立 Docker Image 並上傳 Image 到 Docker Hub
  • 於 x86 CPU 的 Ubuntu 電腦執行 Docker Image

學習目標

  • 如何使用 Buildx 建構多重系統架構Docker 映像檔

前置準備作業

流程

docker-process-2-1

  • ① 於 Apple MacBook 的 ARM 環境建置多重系統架構的 Busybox 之 Docker Image
  • ② 將多重系統架構的 Busybox 之 Docker Image 上傳到 Docker Hub
  • ③ 於 Apple MacBook 的 ARM 環境從 Docker Hub 下載多重系統架構的 Busybox 之 Docker Image
  • ④ 於 Apple MacBook 的 ARM 環境執行多重系統架構的 Busybox 之 Docker Image
  • ⑤ 於 x86 Ubuntu 環境從 Docker Hub 下載多重系統架構的 Busybox 之 Docker Image
  • ⑥ 於 x86 Ubuntu 環境執行多重系統架構的 Busybox 之 Docker Image

於 ARM CPU 的電腦來建立 Docker Image 並上傳 Image 到 Docker Hub

Step 1. 請建立 Dockerfile 檔案,其內容如下:

  • 本範例使用 Busybox 為例

Step 2. 確認目前的 builder

  • 於終端機輸入下方指令:
sudo docker buildx ls

---2022-09-15---2.25.12


Step 3. 建立新的 builder 並切換過去

  • 於終端機輸入下方指令:
sudo docker buildx create --name multiarch --use

---2022-09-15---2.25.49


Step 4. 確認狀態

  • 於終端機輸入下方指令:
sudo docker buildx ls --builder multiarch

---2022-09-15---2.26.35


Step 5. 檢查目前的 builder

  • 於終端機輸入下方指令:
sudo docker buildx inspect --bootstrap

---2022-09-15---2.27.27


Step 6. 建立支援 amd64arm64Docker Image 並且推送至 Docker Hub

  • 於終端機輸入下方指令:
    • 請修改下方指令中「DOCKER-HUB-USER-NAME」為 Docker Hub 所使用的登入名稱
sudo docker buildx build . --platform linux/amd64,linux/arm64 --push -t DOCKER-HUB-USER-NAME/multi-platform-busybox:v1

---2022-09-15---2.29.24


Step 7. 於 Docker Hub 確認是否有上傳成功

---2022-09-15---2.30.04


Step 8. 從 Docker Hub 下載 Image 並於 ARM 電腦執行

  • 於終端機輸入下方指令:
    • 請修改下方指令中「DOCKER-HUB-USER-NAME」為 Docker Hub 所使用的登入名稱
sudo docker pull DOCKER-HUB-USER-NAME/multi-platform-busybox:v1

---2022-09-15---2.32.34

---2022-09-15---2.32.57


Step 9. 驗證在 ARM 環境中所 Build 的 Docker Image 是否能正常於 ARM 環境執行

  • 於終端機輸入下方指令:
    • 請修改下方指令中「DOCKER-HUB-USER-NAME」為 Docker Hub 所使用的登入名稱
sudo docker run --rm DOCKER-HUB-USER-NAME/multi-platform-busybox:v1 date

---2022-09-15---2.33.38

於 x86 CPU 的 Ubuntu 電腦執行 Docker Image

Step 1. 安裝 Docker Engine

  • 於終端機輸入下方指令以下載安裝 Shell Script
wget https://raw.githubusercontent.com/ArcherHuang/Docker-Python-Flask/main/Script/install-docker.sh

---2022-09-15---2.38.45

  • 於終端機輸入下方指令以改變權限
chmod 777 install-docker.sh

---2022-09-15---2.39.25

  • 於終端機輸入下方指令以改變權限
sudo ./install-docker.sh

---2022-09-15---2.40.41

  • 於終端機輸入下方指令以確認安裝結果
sudo docker images

---2022-09-15---2.41.14


Step 2. 從 Docker Hub 下載 Image 並於 X86 電腦執行

  • 於終端機輸入下方指令:
    • 請修改下方指令中「DOCKER-HUB-USER-NAME」為 Docker Hub 所使用的登入名稱
sudo docker pull DOCKER-HUB-USER-NAME/multi-platform-busybox:v1

---2022-09-15---2.42.08


Step 3. 驗證在 ARM 環境中所 Build 的 Docker Image 是否能正常於 x86 環境執行

  • 於終端機輸入下方指令:
    • 請修改下方指令中「DOCKER-HUB-USER-NAME」為 Docker Hub 所使用的登入名稱
sudo docker run --rm DOCKER-HUB-USER-NAME/multi-platform-busybox:v1 date

---2022-09-15---2.42.56

Reference

GitHub

List of blogs