动态

详情 返回 返回

藍易雲:arm安裝docker與docker-copose - 动态 详情

ARM 安裝 Docker 與 Docker Compose(Debian/Ubuntu 一次性搞定)

面向 ARM(<span style="color:red">arm64/aarch64</span>、<span style="color:red">armhf</span>)服務器與開發板,我們追求的是:最短路徑上線、版本可控、可複製到 CI/CD 與生產。以下方案採用 <span style="color:red">發行版官方倉庫</span> 的穩定包,開箱即用;企業內網可用相同指令對接鏡像倉庫,降低外網依賴。🚀


一、環境自檢(確保硬件&內核匹配)

uname -m && lsb_release -sd || cat /etc/os-release
dpkg --print-architecture
getconf LONG_BIT
  • 解釋:

    • uname -m:查看硬件架構(期望 aarch64/arm64armv7l)。
    • lsb_release -sd:打印發行版版本,便於選包策略。
    • dpkg --print-architecture:輸出 arm64armhf;和鏡像拉取架構一一對應。
    • getconf LONG_BIT:確認 64 位系統以便選用 <span style="color:red">arm64</span> 生態。

二、快速安裝(官方倉庫,穩定可審計)✅

適用於 Debian 12+/Ubuntu 20.04+,獲得 <span style="color:red">docker</span>、<span style="color:red">buildx</span>、<span style="color:red">Compose v2</span>(docker compose 子命令)。
sudo apt update
sudo apt install -y docker.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker
docker version
docker compose version
  • 解釋:

    • apt install docker.io:安裝守護進程與 CLI。
    • docker-buildx-plugin:開啓 <span style="color:red">多架構構建</span>(ARM 常用)。
    • docker-compose-plugin:安裝 <span style="color:red">Compose v2</span>,使用 docker compose
    • systemctl enable --now docker:設置開機自啓並立即啓動。
    • usermod -aG docker $USER:將當前用户加入 <span style="color:red">docker 組</span>,免 sudo。
    • newgrp docker:即時生效,無需重登。
    • docker version / docker compose version:驗證安裝結果。
明確立場:優先使用 <span style="color:red">docker compose</span>(Compose v2 插件),避免舊版 docker-compose 二進制帶來的維護成本與兼容風險。

三、ARM 專項優化(讓性能與兼容都對齊)

1)啓用 BuildKit(更快、更省)

echo '{ "features": { "buildkit": true } }' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
  • 解釋:開啓 <span style="color:red">BuildKit</span>,加速構建並改善緩存複用;ARM 設備普遍 CPU 資源有限,收益明顯。

2)多架構鏡像構建(arm64 + amd64 一把梭)

docker buildx create --use --name multiarch
docker buildx inspect --bootstrap
# 示例:同時產出 arm64/amd64
docker buildx build --platform linux/arm64,linux/amd64 -t your.registry/app:1.0 --push .
  • 解釋:通過 <span style="color:red">buildx</span> 一次構建多平台鏡像,方便在 ARM 開發、x86 生產同時複用。

3)Raspberry Pi/嵌入式內核參數(如需內存與 cpuset 管控)

# 僅供需要時:在 /boot/cmdline.txt 末尾追加(注意與現有參數空格分隔)
# cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
  • 解釋:為部分 ARM 開發板開啓 <span style="color:red">cgroup</span> 相關能力,容器資源控制更穩定。⚙️

四、Compose 最小可行例(跨平台無感拉起)

mkdir -p ~/apps/ng && cd ~/apps/ng
cat > docker-compose.yml <<'YML'
services:
  web:
    image: nginx:stable
    ports:
      - "8080:80"
    deploy:
      resources:
        limits:
          cpus: "0.50"
          memory: "256M"
YML
docker compose up -d
docker compose ps
  • 解釋:

    • nginx:stable 提供 ARM 與 x86 多架構鏡像,ARM 上直接拉起。
    • ports 映射到宿主 8080,瀏覽器訪問驗證。
    • deploy.resources.limits:給輕量 ARM 設備設置 <span style="color:red">資源上限</span>,避免“拖垮全機”。

五、常用運維基線(生產可複用)🧩

# 自啓動與健康狀態
sudo systemctl status docker
docker info

# 開啓日誌輪轉(避免小盤 ARM 被日誌吃滿)
sudo mkdir -p /etc/docker
cat | sudo tee /etc/docker/daemon.json <<'JSON'
{
  "features": { "buildkit": true },
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}
JSON
sudo systemctl restart docker

# 清理舊鏡像/容器/網絡(定期)
docker system prune -af
  • 解釋:日誌輪轉對小存儲 ARM 主機極其關鍵;prune 建議在 CI 或運維巡檢中定期執行。

六、升級與回滾(版本治理不翻車)

sudo apt update
sudo apt install -y docker.io docker-buildx-plugin docker-compose-plugin
# 升級後驗證
docker --version && docker compose version

# 如遇回滾需求:apt 支持安裝歷史版本(結合企業鏡像倉庫的快照策略)
  • 解釋:基於發行版倉庫的版本控制更穩,便於 <span style="color:red">合規審計</span> 與 <span style="color:red">可追溯</span>。

七、安裝路徑對比(為決策者準備)

方案 適用場景 優點 注意點
<span style="color:red">apt 安裝 docker.io + 插件</span> 生產/內網、強調穩定 易維護、無外鏈、版本管理清晰 可能略慢於上游的最新特性
二進制手工部署 極端離線、強定製 可完全自控 運維複雜、需自建更新流程
容器內套容器(DinD) CI/隔離場景 強隔離 ARM 設備資源佔用偏高,謹慎評估

八、工作流程圖(vditor/Markdown 可視化)

flowchart TD
    A[檢測架構與系統版本] --> B{安裝策略}
    B -->|標準| C[apt 安裝 docker.io + buildx + compose]
    B -->|離線/內網| D[對接企業鏡像/離線包]
    C --> E[systemctl enable --now docker]
    E --> F[usermod -aG docker; newgrp docker]
    F --> G[啓用 BuildKit & 日誌輪轉]
    G --> H[buildx 多架構構建]
    H --> I[docker compose 部署服務]
    I --> J[健康檢查與定期清理]

九、故障排查熱點(ARM 場景高頻)

  • <span style="color:red">鏡像拉取慢/失敗</span>:優先配置企業鏡像倉庫;核對 dpkg --print-architecture 與鏡像平台匹配。
  • <span style="color:red">內存吃緊</span>:限制 deploy.resources.limits,啓用日誌輪轉並定期 prune;對構建類任務使用 <span style="color:red">BuildKit</span>。
  • <span style="color:red">編譯鏈不兼容</span>:多架構鏡像用 <span style="color:red">buildx</span>;本機僅跑容器,編譯在 CI 上完成更穩。
  • <span style="color:red">權限問題</span>:確認用户在 docker 組,或在 CI 中顯式使用 sudo docker ...

結論:在 ARM 設備上,用發行版倉庫安裝 docker.io + buildx + compose,再打開 <span style="color:red">BuildKit</span> 與日誌輪轉,就是一套可規模複製、可指標閉環的企業級落地方案。小設備也能跑出大組織的交付速度與穩定性。💼✨

user avatar journey_64224c9377fd5 头像 Jingkunliu 头像 vivotech 头像 changqingdezi 头像 summo_java 头像 tiandexianggua 头像 jueqiangderijiben_xuc2 头像
点赞 7 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.