Linux 安裝 Docker CE

Undefined443發表於2024-03-09

安裝 Docker CE

Docker CE 的安裝方法參考自 Install Docker Engine | Docker Docs

Docker Engine (也稱作 Docker CE) 是 Docker 官方的社群版包,它不包含在 Ubuntu 預設的儲存庫中。因此,你無法直接使用 apt install docker-ce 命令安裝 docker-ce。你需要先新增 Docker 的官方 GPG 秘鑰和儲存庫才能使用這個命令安裝 docker-ce

使用簡易指令碼安裝

Docker 官方為我們編寫了一個指令碼,可以快速為我們完成上面的步驟。這個指令碼的位置在 get.docker.com

# 下載指令碼
curl -fsSL https://get.docker.com -o install-docker.sh

# 執行指令碼,這裡透過 --mirror 選項指定使用阿里雲映象源加速安裝
sudo sh install-docker.sh --mirror Aliyun

使用 APT 安裝

這裡介紹使用 APT 包管理器為 Ubuntu 安裝 Docker CE 的方法。參考自 Install Docker Engine on Ubuntu | Docker Docs

如果你安裝過 Docker 的非官方版本包的話,你需要先清理這些包:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

新增 Docker 官方 GPG 公鑰和 Docker 倉庫:

# 新增 Docker 官方的 GPG 公鑰
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings  # 建立 keyrings 目錄,用來存放認證 APT 源的金鑰環檔案
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  # 下載 Docker 的 GPG 公鑰
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 將 Docker 倉庫新增到 APT 倉庫列表
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安裝 Docker CE:

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

至此,Docker CE 就安裝完成了。

不使用 sudo 執行 docker

截至目前,你需要使用 sudo 來執行 docker 命令。

原因是 Docker 守護程式繫結到 Unix 套接字,而不是 TCP 埠。預設情況下,擁有 Unix 套接字的是 root 使用者,其他使用者只能使用 sudo 訪問它。Docker 守護程式始終以 root 使用者身份執行。

將使用者新增到 docker 組

參考自 Linux post-installation steps for Docker Engine | Docker Docs

如果不想在 docker 命令前加上 sudo,請建立一個名為 docker 的 Unix 組,並將使用者新增到其中。當 Docker 守護程式啟動時,它會建立一個 Unix 套接字,只有 docker 組的成員可以訪問。

注意 ⚠️:該組為使用者授予 root 級別許可權。而這可能會影響系統安全

如果你希望讓 Docker 在非 root 模式下執行,請參考下節 rootless mode

  1. 建立 docker 使用者組:

    sudo groupadd docker
    

    你的電腦上可能已經存在 docker 組,此時命令可能報錯。你可以忽略這個錯誤。

  2. 將你的使用者新增到 docker 組中:

    sudo usermod -aG docker $USER
    
  3. 登出並重新登入 Linux

  4. 測試配置是否成功

    docker run hello-world
    

    命令的輸出應該是 Hello from Docker! 以及一大行字串

Rootless Mode

參考自 Run the Docker daemon as a non-root user (Rootless mode) | Docker Docs

安裝

安裝依賴:

sudo apt-get install -y uidmap

安裝 rootless mode:

dockerd-rootless-setuptool.sh install

如果提示 dockerd-rootless-setuptool.sh 不存在,則可能需要手動安裝 docker-ce-rootless-extras 包:

sudo apt-get install -y docker-ce-rootless-extras

解除安裝

刪除 Docker 守護程式的 systemd 服務:

dockerd-rootless-setuptool.sh uninstall

刪除資料目錄:

rootlesskit rm -rf ~/.local/share/docker

解除安裝 Docker CE

解除安裝 Docker CE:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

刪除殘留映象、容器、卷,以及自定義配置檔案:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

相關文章