ubuntu20.04安装docker环境
一、安装docker
- 安装docker
sudo apt-get install docker.io
- 查看版本(验证 Docker 是否安装成功)
sudo docker version 或 docker -v
- 将当前用户加入 docker 用户组(避免每次运行 docker 都需要使用 sudo)
注意:执行此操作后需要注销并重新登录。sudo usermod -aG docker $USER
- 启动
sudo systemctl start docker.service
- 查看状态
sudo systemctl status docker
- 修改docker源和修改镜像路径
- 可以使用
docker info
查看当前docker的默认存储目录。可以看到docker存储驱动程序和默认存位:
Storage Driver: overlay
Docker Root Dir: /var/lib/docker - 停止docker服务
sudo systemctl stop docker.service
- 迁移/var/lib/docker目录下面的文件到 /data/xxx/docker;(注意xxx是你自己定义的目录,找个磁盘空间大一点的目录)
sudo cp -r /var/lib/docker/* /data/xxx/docker/
- 创建或编辑 Docker 的守护进程配置文件:(默认情况下这个配置文件是没有的,这里实际也就是新建一个)
sudo gedit /etc/docker/daemon.json
- 添加以下内容:(注意xxx是你自己定义的目录)
{ "data-root": "/data/xxx/docker", "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "docker.m.daocloud.io", "docker.imgdb.de", "docker-0.unsee.tech", "docker.hlmirror.com", "cjie.eu.org" ], "default-runtime": "nvidia", "runtimes": { "nvidia": { "args": [], "path": "nvidia-container-runtime" } } }
- 保存文件并重启 Docker:
# 重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl status docker docker info # 校验一下是否更改成功 docker ps -a docker images # 确认之前的镜像还在 # 校验是否能下载镜像 docker run ubuntu:15.10 /bin/echo "Hello world"
- 确定容器、镜像没问题后删除/var/lib/docker/目录中的文件。
rm -rf /var/lib/docker/*
- 可以使用
- docker中使用GPU
- 方法一: 使用nvidia-container-runtime:
- 添加库: Link
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
- 安装nvidia-container-runtime:
sudo apt-get install nvidia-container-runtime systemctl restart docker #重启docker
- 测试验证:(启动命令中添加参数:–gpus all 或 --gpus "device=1"指定):
docker run --gpus all --rm nvidia/cuda:11.0-base nvidia-smi
- 添加库: Link
- 方法二:安装 NVIDIA Container Toolkit
- 设置 NVIDIA Container Toolkit 仓库:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/nvidia-docker/$(. /etc/os-release; echo $ID$VERSION_ID)/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
- 更新软件包索引并安装 NVIDIA Container Toolkit:
sudo apt update sudo apt install -y nvidia-container-toolkit
- 配置容器运行时:
sudo nvidia-ctk runtime configure --runtime=docker
- 重启 Docker 服务:
sudo systemctl restart docker
- 验证安装是否成功:
docker run --rm --gpus all nvidia/cuda:12.0.1-base nvidia-smi
- 设置 NVIDIA Container Toolkit 仓库:
- 离线安装GPU的docker环境
前提:已经安装好了docker(需要docker版本>=19.03),可以用docker -v进行测试
说明:Docker 19.03的发布,不赞成使用nvidia-docker2软件包,因为Docker运行时中现在已将NVIDIA GPU作为设备本地支持
nvidia将提供原生的显卡支持,只需要安装 nvidia-container-toolkit工具包不再像使用nvidia-docker/2那样复杂配置,而且不支持用docker-compose
在docker19以前都需要单独下载nvidia-docker1或nvidia-docker2来启动容器,docker19后跑需要gpu的docker只需要加个参数–gpus all 即可-
联网机器设置仓库和GPG密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
其实,distribution就是你的系统名称,例如:
ubuntu22.04
等,可以通过cat /etc/os-release
等命令查看,查看后替换命令中的内容就行,并设置成临时变量。 -
在联网的机器上下载包
apt download libnvidia-container1 apt download libnvidia-container-tools apt download nvidia-container-toolkit-base apt download nvidia-container-toolkit
或者在NVIDIA的GitHub主页找到Ubuntu系统对应的NVIDIA Container Toolkit安装包,页面的安装包较多,搜索关键词“1.17.4”,进行下载安装包即可:
libnvidia-container1_1.17.4-1_amd64.deb # 基础库包,提供了最基本的功能,其他包都依赖于它 libnvidia-container-tools_1.17.4-1_amd64.deb # 基础工具包,依赖于 libnvidia-container1 nvidia-container-toolkit-base_1.17.4-1_amd64.deb # 基础组件包,依赖于前面的包 nvidia-container-toolkit_1.17.4-1_amd64.deb # 主要的工具包,依赖于以上所有包 libnvidia-container1-dbg_1.17.4-1_amd64.deb # 调试符号包,只在调试问题时使用 libnvidia-container-dev_1.17.4-1_amd64.deb # 开发包,只在进行开发时使用
其中最后两个安装包可以选择不下载和不安装
-
拷贝到离线机器上安装(注意:需要按顺序安装)
# 按顺序执行 dpkg -i libnvidia-container1 dpkg -i libnvidia-container-tools dpkg -i nvidia-container-toolkit-base dpkg -i nvidia-container-toolkit
-
查看NVIDIA Container Toolkit的版本以验证是否安装成功
nvidia-ctk --version
-
设置Docker默认使用NVIDIA runtime
sudo nvidia-ctk runtime configure --runtime=docker
-
重启docker服务
systemctl restart docker
-
创建容器
docker run --rm --gpus all -v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
-
备注:
备注说明: 方法一: 安装nvidia-container-toolkit,后添加—gpus参数来使用 使用nvidia-container-toolkit的最大优点:linux主机不需要安装 CUDA toolkit,仅安装显卡驱动 cuda-drivers 即可 sudo docker run --gpus all -v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash 方法二: nvidia-docker2 and nvidia-container-runtime 安装nvidia-container-runtime,在首次运行时添加—runtime=nvidia参数,后续启动、结束都不需要再加 sudo apt-get install nvidia-container-runtime sudo docker run --gpus all-v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
-
参考博客
- Ubuntu在线/离线安装nvidia-docker2
- 离线安装Docker以及NVIDIA-docker
- Ubuntu 22.04离线安装Docker和NVIDIA Container Toolkit
-
- 方法一: 使用nvidia-container-runtime:
二、docker基本操作(以Ultralytics为例)
# 拉取镜像
docker pull ultralytics/ultralytics:latest
# 查看端口号是否被占用
lsof -i 12345
# 创建容器
docker run --gpus all -it --name cc_yolo2 -u root -v /data:/workspace/data -w /workspace/data -p 12345:12345 ultralytics/ultralytics:latest /bin/bash
# 启动容器
docker start cc_yolo2
# 进入容器
docker exec -it cc_yolo2 bash
# 查看其torch的库安装位置
pip show torch
# 删除容器
docker rm -f 容器ID