1 完全清除旧版本docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Images, containers, volumes, and networks stored in /var/lib/docker/
aren't automatically removed when you uninstall Docker. If you want to start with a clean installation,To delete all images, containers, and volumes:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
2 安装docker Get DOcker
2.0 离线安装
- Go to docker download
-
Go to
pool/stable/
and select the applicable architecture (amd64
,armhf
,arm64
, ors390x
). -
Download the following
deb
files for the Docker Engine, CLI, containerd, and Docker Compose packages:containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
- install all the deb
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \./docker-ce_<version>_<arch>.deb \./docker-ce-cli_<version>_<arch>.deb \./docker-buildx-plugin_<version>_<arch>.deb \./docker-compose-plugin_<version>_<arch>.deb
2.1 X86_64在线安装docker-ce
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce -y
sudo systemctl enable docker
3 Docker 常用命令
- docker save -o xxx.tar images_name
- docker load -i xxx.tar
- 启动 imaes as container sudo docker run -it --runtime=nvidia -v /data:/work images_name /bin/bash
- sudo docker run -d -it --runtime nvidia -v /data:/work images_name /bin/bash(后台运行)
- docker exec -it id /bin/bash #进入容器,前提是必须执行上面步骤
- docker exec -d id /bin/bash /opt/command #后台进入docker 执行指令
4 更新docker里的文件,并打包成新镜像
参考链接 docker 从入门到实践
-
docker run -d -it images_id /bin/shdocker psdocker exec -it contanined_id bashchange your fileexitdocker commit -m "提交信息" -a "作者" contain_id new_images_id:tagdocker imagesdocker save -o xxx.tar new_images_id
5 在docker 中使用GPU资源
1 在docker中使用gpu资源有以下几种方法:
-
因为
GPU
属于特定的厂商产品,需要特定的driver
,Docker
本身并不支持GPU
。以前如果要在Docker
中使用GPU
,就需要在container
中安装主机上GPU的driver
,然后把主机上的GPU
设备(例如:/dev/nvidia0
)映射到container
中。所以这样的Docker image
并不具备可移植性。Nvidia-docker
项目就是为了解决这个问题,它让Docker image
不需要知道底层GPU
的相关信息,而是通过启动container
时mount
设备和驱动文件来实现的。
在你使用 nvidia-docker2
的时候,你需要做的有两件事
- 安装
GPU
的driver Dirver Download
- 安装
docker 19.03
- 你不需要安装
CUDA
- 集成到
nvidia-docker
了 - 显卡驱动在主机上,包含显卡驱动和CUDA Driver,我们安装的cuda主要是cuda tookit(包含在nvidia-docker内)
- 集成到
- nvidai-docker 官方安装流程
- If you have a custom
/etc/docker/daemon.json
, thenvidia-docker2
package might override it.
nvidia-docker 2.0 的核心东西是nvidia-contained-runtime,它主要通过修改docker的配置文件/etc/docker/daemon.json来让docker使用NVIDIAContainerRuntime。
如你安装完nvidia-docker2,deamon.json 内容如下,确保本地部署的模型在GPU上正确运行
{"runtimes": {"nvidia": {"path": "nvidia-container-runtime","runtimeArgs": []}}
}
2 在Docker启动命令上携带参数可以调用GPU资源。以下是两种方法:
- 使用--gpus参数:指定使用的GPU设备。可以使用多个参数来指定多个设备,例如--gpus all表示使用所有GPU设备,--gpus 0,1表示使用编号为0和1的两个设备。
示例:docker run --gpus all my_image
- 使用--runtime=nvidia参数:指定使用NVIDIA GPU运行时,需要在安装Docker时安装NVIDIA Container Toolkit。
示例:docker run --runtime nvidia my_image
- 另外,也可以使用--device参数来指定使用的GPU设备,例如--device=/dev/nvidia0:/dev/nvidia0表示使用/dev/nvidia0设备。但需要注意的是,该参数的使用方法可能会因不同的操作系统和Docker版本而略有不同。
- Ubuntu 在线安装 nvidia-docker2
#install nvidia-docker2 curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -sL https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install nvidia-docker2 -y
6 常见docker 镜像
-
Nvidia Jetson 系列
-
Huawei Ascend
-
nvidia/cuda
-
nvidia container runtime on Jeston
-
CUDA upgrade for Jetson User