工作站 Docker 使用方式

Step 1

啟用 systemd 的 linger 功能與註冊 subuid / subgid range:

$ linger-switch enable
$ subuid-register

Step 2

安裝 rootless docker:(預設會裝至 $HOME/bin/ 裡)

$ curl -fsSL https://get.docker.com/rootless | sh

若想更改安裝路徑可以考慮改執行以下指令,此範例會將 docker 安裝至 /tmp2/[ID]/docker/bin

$ curl -fsSL https://get.docker.com/rootless | DOCKER_BIN=/tmp2/[ID]/docker/bin sh

Step 3

設定 DOCKER_HOSTPATH 環境變數:

$ export PATH=$HOME/bin:$PATH
$ export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock

此兩行設定可以在上一步指令輸出的最後面找到:

# Docker binaries are installed in [...]
which: no dockerd in ([PATH...])
# WARN: dockerd is not in your current PATH or pointing to [...]/dockerd
# Make sure the following environment variables are set (or add them to ~/.bashrc):\n
export PATH=[...]:$PATH
export DOCKER_HOST=unix:///run/user/[uid]/docker.sock

若輸出是如此代表 PATH 已有設定,只需在設定 DOCKER_HOST 即可:

# Docker binaries are installed in [...]
# Make sure the following environment variables are set (or add them to ~/.bashrc):\n
export DOCKER_HOST=unix:///run/user/[uid]/docker.sock

亦可將此設定放入慣用的 shell 設定檔(例如 ~/.bashrc)當中。

Step 4

由於 docker 的資料可能會占用較大空間,建議將 docker 的資料路徑放到 /tmp2 下:可以透過設定 ~/.config/docker/daemon.json,來達成切換資料存放路徑,例如以下的設定會將資料擺放至 /tmp2/[ID]/docker 裡。

{
    "data-root": "/tmp2/[ID]/docker"
}

詳細可參考 docker 官方 文件1文件2

設定完畢後,重新啟動 docker daemon 來載入正確設定:

$ systemctl --user daemon-reload
$ systemctl --user restart docker

Step 5

安裝完畢,可使用 docker 相關指令,並可使用 systemctl --user start dockersystemctl --user stop docker 開始/停止 docker daemon。

注意事項

  • rootless 版本的 docker 功能上有所限制(詳見 docker 官方網頁)。
  • 若要將 docker 安裝在多台工作站上,則每台工作站上皆須執行 1. 與 3. 兩個步驟,另外需要自行讀取 systemd 設定檔並啟用 docker daemon(systemctl --user daemon-reload; systemctl --user start docker)。