参考官网链接安装
1. 安装 docker
1.1 卸载旧版本
卸载 docker 之前,移除所有的容器、镜像、卷及网络:
docker container stop $(docker container ls -aq)
docker system prune -a --volumes
卸载旧版本 docker :
sudo apt purge docker-ce
sudo apt autoremove
1.2 安装依赖并添加 GPG key
sudo apt update
sudo apt install curl apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# Add the official GPG key of Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
1.3 添加 软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
1.4 更新 ubuntu 源列表并安装 docker
安装最新版:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装自定义版本:
sudo apt update
apt list -a docker-ce
sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io
1.5 验证是否正常运行
# 测试 docker 是否运行正常
sudo docker run hello-world
# hello-world出错可更换docker源
sudo gedit /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
}
1.6 添加当前用户到用户组
将登录用户加入 docker 用户组中,每次使用 docker 不需要再 使用 sudo
# 添加 docker 用户组
sudo groupadd docker
# 将登录用户加入到 docker 用户组中
sudo gpasswd -a $USER docker
# 更新用户组
newgrp docker
# 测试 docker 命令是否可以正常使用
docker ps
# 重启电脑
sudo reboot
2. 安装 nvidia-docker
2.1 卸载旧版本
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
2.2 添加源
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
2.3 安装Nvidia-docker2
sudo apt-get install -y nvidia-docker2
# 重启 docker daemon:
sudo service docker restart
2.4 验证是否安装完成:
docker run --runtime=nvidia --rm nvidia/cuda:11.0-base nvidia-smi
2.5 报错及解决方案
2.5.1 找不到runtime
提示未知的nvidia runtime:
docker: Error response from daemon: Unknown runtime specified nvidia.
在etc/docker/daemon.json
中添加如下内容,其中registry-mirrors
是docker的国内源,在 1.5 部分添加
sudo gedit /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
"insecure-registries": ["registry.test.cn"],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"live-restore": true,
"metrics-addr": "0.0.0.0:9323",
"default-runtime": "nvidia",
"experimental": true,
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
2.5.2 找不到nvidia/cuda的版本
去官网hub.docker.com找到cuda对应的版本,并使用docker pull xxx的指令下载对应版本:
本机下载是11.7.1-base-ubuntu20.04
版本,使用如下指令可正常输出:
docker run --runtime=nvidia --rm nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi
3. 卸载 docker
删除 docker 相关软件,及其安装时自动安装的所有包
sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
查看 docker 其他没有被卸载的包
dpkg -l | grep docker
sudo apt autoremove docker-ce-*
删除docker的相关配置&目录
sudo rm -rf /etc/systemd/system/docker.service.d
sudo rm -rf /var/lib/docker
确定 docker 卸载完毕
docker --version
4. docker 常用指令
docker images # 查看所有镜像
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止容器
docker exec -it 容器ID /bin/bash # 进入容器
exit # 退出容器
docker build -f Dockerfile -t 镜像名:V1 # 构建镜像
docker run -d -p 端口 镜像名:V1 # 创建并运行容器
docker rm 容器ID # 删除容器
docker image rm 镜像ID # 删除镜像
docker cp XXX.jar 容器ID:/opt # 复制jar到容器中:
docker load xxx.tar.gz # 加载容器