系统与访问入口准备好后,接下来安装 Docker。后续的可道云和 GitLab 都使用 Compose 配置,让端口和持久化目录可以随配置一起维护。

配置软件源

sudo apt update -y
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

添加对应系统代号和架构的软件源:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update -y

安装

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

验证安装

sudo systemctl enable docker
sudo systemctl status docker

数据与权限

免sudo指定docker指令

将当前用户加入 docker 用户组,后续执行 Docker 命令就不用加 sudo:

sudo usermod -aG docker "$USER"

创建共享账户,解决文件夹权限问题

创建 GID 为 2000 的共享组 docker-nas,将当前用户加入该组,并创建数据目录:

sudo groupadd --gid 2000 docker-nas
sudo usermod -aG docker-nas "$USER"
sudo mkdir -p /mnt/ssd/docker/{cache,config,data,logs}
sudo chgrp docker-nas /mnt/ssd/docker/{cache,config,data,logs}
sudo chmod 2770 /mnt/ssd/docker/{cache,config,data,logs}

2770 允许目录所有者和共享组成员读写、进入目录,其他用户没有访问权限;其中的 2 设置了 setgid,让新建文件和子目录继承 docker-nas 组。新文件是否允许组成员写入,仍由创建程序的权限设置和 umask 决定。目录权限含义可参考 GNU 文档 。

执行完成后,退出 SSH 并重新登录,让两个用户组的变更生效,参见 Docker 官方说明 。后续容器需要以非 root 身份写入这些目录时,也要为容器进程配置 GID 2000 或对应的附加组;宿主机用户加入共享组,不会自动改变容器内用户的权限。