Skip to content

[GCP] 如何在 Google Compute Engine 優化的 Container-Optimized OS 上安裝 Docker Compose

Published: at 06:42 AM (2 min read)

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

Container-Optimized OS

❌ 按照官方建議的方式安裝

也許你一開始會先嘗試使用 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.shDocker 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 囉 🎉

📝 參考資料


Previous Post
[LeetCode] 36. Valid Sudoku
Next Post
[Leetcode] 34. Find First and Last Position of Element in Sorted Array