安装 Docker
Docker 提供多种安装方式。如果服务器上安装了桌面,则可以直接安装 Docker Desktop。否则需要安装 Docker Engine。
Docker Desktop 的安装相对简单,直接到官网下载安装包即可。安装完成后需要在【Settings - General - Configure shell completions - Automatically (edits your shell configuration)】点击【Install】。
下面以 Ubuntu 为例介绍 Docker Engine 的安装方式。最简单的方式是使用简易脚本:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
更多安装方式可以查看 https://docs.docker.com/engine/install/。
配置文件
Docker Desktop 的配置文件可以在【Settings - Docker Engine】中进行编辑。
Docker Engine 的配置文件在 /etc/docker/daemon.json
。
使用权限
默认情况下,执行 Docker 命令需要 root
权限,使用起来非常不便。为此,可以将所有需要使用 Docker 的用户,加入 docker
组:
sudo usermod -aG docker ${USER}
所有在 docker
组内的用户,都可以直接执行 Docker 命令。
NVIDIA Container Toolkit
只有安装了 NVIDIA Container Toolkit,才能在 Docker 中使用 GPU。安装过程可以参考 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html:
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
sudo apt-get install -y nvidia-container-toolkit
安装完成后,需要配置 Docker 使用 NVIDIA Container Toolkit:
sudo nvidia-ctk runtime configure --runtime=docker
上面的命令会向配置文件中写入 nvidia
运行时信息:
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
只需要在执行 docker run
命令时指定 --runtime=nvidia
,就可以在 Docker 中使用 GPU 了。
如果要将 nvidia
设置为默认 runtime
,可以手动修改配置文件:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
阿里云容器镜像服务
国内下载 Docker 镜像的速度比较慢,可以将【镜像工具 - 镜像加速器】的地址写入配置文件:
{
"registry-mirrors": [
"https://xxxxxxxx.mirror.aliyuncs.com"
]
}
如果不方便修改配置文件,也可以使用【实例列表 - 个人版实例】。依次创建【命名空间】和【镜像仓库】,然后在另一台服务器(Server B)上拉取所需镜像。接下来,我们需要将所需镜像上传到【镜像仓库】,并在当前服务器(Server A)上拉取。为了完成这些操作,需要在两台服务器上执行【访问凭证】中给出的登陆命令。
Server B 上需要执行下面的命令:
docker tag ${IMAGE_ID} ${REPO}:${TAG}
docker push ${REPO}:${TAG}
其中,IMAGE_ID
是 Server B 上所需镜像的哈希值,REPO
是【镜像仓库】的公网地址,TAG
最好和所需镜像的 TAG 保持一致。
Server A 上需要执行下面的命令:
docker pull ${REPO}:${TAG}
其他配置(针对 Ubuntu)
建议在配置文件中指定:
{
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
所有配置完成后,重新启动 Docker 使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
常用 Docker
基于 Docker 的 GPU 服务器管理系统
https://gist.github.com/LutingWang/fd2c5c9159ed00b483a4f66de7b56afc