在 Google Compute Engine 中內建 Google 針對 Docker container 優化的 Container-Optimized OS,上面並沒有預設安裝 Docker Compose,因此我們需要手動安裝。

❌ 按照官方建議的方式安裝
也許你一開始會先嘗試使用 Docker Compose 官方建議的安裝方式:
curl -SL https://github.com/docker/compose/releases/download/v2.36.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 接著你會遇到以下錯誤
# Warning: Failed to open the file /usr/bin/docker-compose: Read-only file system
#
# curl: (23) client returned ERROR on write of 1369 bytes
看到以上錯誤會想說是單純權限不足導致的問題,於是將 script 改為以下路徑會發現仍然錯誤 😵
mkdir -p ~/bin
curl -SL https://github.com/docker/compose/releases/download/v2.36.2/docker-compose-linux-x86_64 -o ~/bin/docker-compose
chmod +x ~/bin/docker-compose
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 看起來似乎一切運作順利,但在嘗試執行時
docker-compose version
# 仍然出現以下錯誤
# -bash: ./bin/docker-compose: Permission denied
這是因為 Container-Optimized OS 的設計是為了提供一個更安全的環境,導致你沒辦法在 /usr/local/bin 目錄下寫入檔案及執行任意檔案。
✅ 將 Docker Compose 掛到 Docker 的指令列上
透過 installer.sh 把 Docker Compose 掛到 Docker 的指令列上
#!/bin/bash
curl -O https://gist.githubusercontent.com/camel2243/369a8efd63608ab0ce27cf064d12f5e0/raw/3a02ab53f0ca9c23b3bdddec67bb20dc9a10a387/installer.sh && \
bash ./installer.sh
# 執行 docker compose version 驗證安裝成功
docker compose version
# Docker Compose version v2.36.2
成功安裝後,就可以順利使用 docker compose 囉 🎉