Skip to content

Docker 环境准备

Docker 文档

Docker 安装

Docker 有两种安装方式

  • Docker Engine: 也叫 Docker CE, 适用于 Linux 系统,仅支持命令行操作
  • Docker Desktop: 适用于 Mac、Windows、Linux 系统,支持图形界面操作

Docker Engine

Docker Engine 支持 UbuntuDebianCentOS 等 Linux 发行版本。

例如在 Ubuntu 上使用 apt 安装 Docker Engine

bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install 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

# Add the repository to Apt sources:
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 用户组,以便不用 sudo 运行 Docker 命令

bash
sudo usermod -aG docker $USER

安装 Docker Engine

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

Docker Desktop

Docker Desktop 支持 MacWindowsLinux,其中Linux 不同发行版本安装方式不同,支持 UbuntuDebian 等。

Docker 配置

配置文件

编辑 /etc/docker/daemon.json 文件配置镜像源

重新加载 systemd 守护进程并重启 Docker(systemd 系统)。对于 Desktop 版本,重启 Docker Desktop 即可。

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

镜像源配置

需要自定义网络的情况下,可以编辑 /etc/docker/daemon.json 文件配置镜像源,添加如下内容

json
{
  “registry-mirrors”: [
    “https://mirror.baidubce.com”,
    “https://docker.m.daocloud.io”
  ]
}

TIP

  • 选择一个可用的镜像源即可,不需要全部添加
  • 修改后拉取一个镜像测试速度: docker pull ubuntu:latest
  • JSON 不允许注释,列表最后一项不能以逗号结尾
  • 使用 Docker Desktop 的在 Settings -> Docker Engine 中配置

insecure-registries

在某次 go install 的时候,遇到了类似如下的错误:tls: failed to verify certificate: x509: certificate signed by unknown authority

解决方法是在 Docker Desktop 中添加 insecure-registries,如下图所示:

json
{
  // Docker 如果需要从非 SSL 源管理镜像,这里加上。
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.m.daocloud.io",
    "goproxy.cn"
  ]
}

Docker Hub 注册

Docker Hub 注册一个账号,可以在 Docker Hub 上发布自己的镜像。

bash
docker push <username>/<repo>:<tagname>

Docker GPU

Nvidia GPU 的支持,目前只支持 Linux 系统,需要安装 NVIDIA Container Toolkit⁠.

配置 apt 存储库

bash
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
    | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update

安装 NVIDIA Container Toolkit

bash
sudo apt-get install -y nvidia-container-toolkit

配置 Docker 以使用 Nvidia 驱动程序

bash
sudo nvidia-ctk runtime configure --runtime=docker

执行上述命令后,会在配置文件 /etc/docker/daemon.json 中自动添加如下配置

json
{
  "runtimes": {
      "nvidia": {
          "args": [],
          "path": "nvidia-container-runtime"
      }
  }
}

重启 Docker 服务以使配置生效

bash
sudo systemctl restart docker

随后在启动容器时,使用 --gpus 参数指定使用的 GPU 设备

bash
docker run --gpus all ...

如果使用 docker-compose 启动容器,需要在 docker-compose.yml 文件中添加如下配置

yaml
services:
  myservice:
    image: myimage
    runtime: nvidia  #
    ...