docker

常用命令

构建Docker镜像:docker build -t my_conda_image:v1 .
运行Docker容器:docker run --rm -it my_conda_image sudo docker run --name try_container imagename(--rm: 在容器停止运行后自动删除容器。--gpus all: 指定在容器中使用所有可用的 GPU 资源。-it:进入容器交互模式。)

sudo docker run --gpus all -it --name try_container aaam_image:v1 /bin/bash

查看已构建image:docker image ls docker images
删除指定的镜像:docker rmi <IMAGE_ID> docker rmi <REPOSITORY>:<TAG>

列出所有正在运行和已停止的容器:docker ps -a
停止该容器:docker stop <CONTAINER_ID>
启动容器:docker start b58c5185b76e【容器ID】
进容器:docker attach b58c5185b76e【容器ID】
退出容器:ctrl+D
删除指定的容器:sudo docker rm my_container
删除所有停止的容器:docker container prune

修改容器内部文件:sudo docker cp /home/wsn/project/AAAMdocker/test.py a5f427510146:/app
在容器内部执行更改:docker exec -it <container_id> /bin/bash

在Dockerfile中挂载:

//在容器中挂载输入图片和输出txt文件的目录
VOLUME ["/input", "/output"]
// 创建容器时
docker run -v /path/to/input:/input -v /path/to/output:/output your-image-name

sudo docker run -it --gpus all --name con3 -v /home/wsn/project/AAAMdocker/images:/app/images -v /home/wsn/project/AAAMdocker/output:/app/output aaam_image:v1 /bin/bash

以容器为基础生成新的镜像(-a:指定新镜像作者;-c:使用 Dockerfile 指令来创建镜像;-m:提交生成镜像的说明信息;-p:在 commit 时,将容器暂停):

sudo docker commit -m "create new img" -c 'VOLUME ["/images", "/output"]' -c 'CMD ["python", "test.py"]' eda05ad514f8 newimage:v1

sudo docker commit -c 'CMD ["python", "test.py"]' 0f2024fdbb94 image1:v1

查看系统日志:

sudo cat /var/log/syslog

守护进程文件在/etc/docker/daemon.json

查看 Docker 的存储状态和未使用的镜像:

docker system df

image

清理未使用的镜像和数据:

docker system prune -f

docker存储检查指令

查看占用的磁盘总量:

docker system df

直接用 du 看物理占用:

sudo du -sh /var/lib/docker

问题

NVIDIA Container Runtime

image
需要下载NVIDIA Container Runtime:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
&& 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/$distribution/libnvidia-container.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-docker2
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

看到下图则成功:
image

用docker打包gpu项目

Docker 容器不会自动看到您系统的 GPU。Docker 容器共享您主机的内核,但带有自己的操作系统和软件包。这意味着它们缺少用于与 GPU 交互的 NVIDIA 驱动程序。默认情况下,Docker 甚至不会向容器添加 GPU,因此docker run根本看不到您的硬件。
概括地说,让 GPU 工作是一个两步过程:在映像中安装驱动程序,然后指示 Docker 在运行时将 GPU 设备添加到容器中。

添加 NVIDIA 驱动程序

在继续进行 Docker 配置之前,请确保您的主机上的 NVIDIA 驱动程序正常工作。您应该能够成功运行nvidia-smi并看到您的 GPU 名称、驱动程序版本和 CUDA 版本。
要将 GPU 与 Docker 结合使用,请首先将NVIDIA Container Toolkit添加到您的主机。这集成到 Docker 引擎中以自动配置您的容器以支持 GPU。(参考上一步NVIDIA Container Runtime)

使用 GPU 访问启动容器

由于默认情况下 Docker 不提供您系统的 GPU,您需要创建带有--gpus硬件标志的容器以显示。您可以指定要启用的特定设备或使用all关键字。
该nvidia/cuda 镜像是预先配置了CUDA二进制文件和GPU的工具。启动一个容器并运行nvidia-smi命令来检查您的 GPU 是否可以访问。输出应与您nvidia-smi在主机上使用时看到的相符。CUDA 版本可能会有所不同,具体取决于主机上和所选容器映像中的工具包版本。

参考:https://cloud.tencent.com/developer/article/1924792

离线安装docker

参考:https://blog.csdn.net/chexlong/article/details/127932711

docker镜像源

https://xuanyuan.me/blog/archives/1154

posted @ 2024-12-22 23:34  妙妙屋~  阅读(61)  评论(0)    收藏  举报