零 概述
本文将介绍如何在一台 Ubuntu20.04 的机器上安装 Docker 和 NVIDIA Container Runtime,从而可以在机器上启动带有GPU的容器。并介绍一些限制容器启动在指定 GPU 卡上的 docker 命令
一 安装 docker
sudo apt-get update
# 安装证书
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 建立docker资源库
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证 是否安装成功
sudo docker -v
docker run hello-world
# 增加当前用户入docker组中
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
# 验证 docker 的安装
docker ps
docker run hello-world
二 安装 NVIDIA Container Runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install nvidia-container-runtime
修改docker配置文件:vim /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"registry-mirrors": ["https://yp5fg15q.mirror.aliyuncs.com"],
"data-root": "/data/docker/images",
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true",
"overlay2.size=100G"
]
}
重启docker服务:
sudo systemctl restart docker
三 docker 命令示例
-
启动容器,指定端口映射:
docker run -it --name 容器名 -p 6020:5212 -p 6030:8000 镜像ID /bin/bash
-
进入容器:
docker exec -it 容器名 bash
-
退出容器,但不停止容器:
Ctrl + P + Q
-
启动容器时,执行某个 shell 命令:
docker run -it --name 容器名 镜像名 /bin/bash -c "cd /opt/support && nohup support serve -a 0.0.0.0:8000 > run.log 2>&1 & /bin/bash"
-
限制容器启动在某张 GPU和某些 CPU 核心上:
docker run --runtime=nvidia --restart=always -it --name 容器名 --cpuset-cpus="49-63" -m 64G -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /etc/data-motd:/etc/data-motd:ro --gpus '"device=3"' --storage-opt size=350G -p 10000:22 -p 10001:9820 -p 10002:10002 镜像名 /bin/bash -c 'service ssh start && echo "root:123456"|chpasswd && source /root/anaconda3/bin/activate &&/bin/bash /usr/bin/hpcuniversity --token=123456'
-
打包和解压容器:
docker commit 容器id 镜像名称:版本号 docker save -o 压缩文件名称 镜像名称:版本号 docker load -i 压缩文件名称
评论区