dock深度学习容器
本帖最后由 Handsome_zhou 于 2024-1-18 13:48 编辑配置nvidiadocker,拉取深度学习容器:
先安装docker engin(有驱动就可):
curl https://get.docker.com | sh \
&& sudo systemctl --now enable docker
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 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 --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
创建容器:
sudo docker run --gpus all -it --rm -p 8888:8888 -v ~:/workspace \
--ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
nvcr.io/nvidia/pytorch:22.07-py3
参考链接:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch
https://www.bilibili.com/video/BV1LT411F77M/?spm_id_from=333.999.0.0&vd_source=34e107ec31dd4e63733e99531caedb48
docker 相关指令:
docker ps -a :展示所有已经启动的容器或已经停止的容器
docker ps : 展示所有在运行中的容器
docker images: 展示本地所有的容器
docker commit 容器ID 新镜像名 : 生成新的镜像
sudo docker run -it 容器名:进入容器
容器重新保存之后,进入容器,flag需要和之前一样
docker删除容器:docker rm ContainerId(or container_name)
docker删除镜像:docker rmi ImageId(or image_name)
拉取镜像,开发,保存的操作:
1、拉取镜像:docker pull xxxxxx
2、创建容器:示例:sudo docker run --name=yuyin --gpus all -it -p 6789:22 -v ~:/workspace -v /data3:/data3 --ipc=host --ulimit memlock=-1 --privileged --cap-add=ALL --pid=host registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.5 /bin/bash
2.1、以交互方式进入容器: sudo docker exec -it container_name /bin/bash -il 或者 sudo docker attach container_name
3、将容器转成镜像:docker commit container_name NewImage_name:New_Tag
4、保存镜像至本地:docker save -o NewImage_name.tar NewImage_name:New_Tag
5、使用保存至本地的镜像:docker load < NewImage_name.tar
将用户添加到docker用户组:
1、sudo gpasswd -a username docker
2、newgrp docker
Docker指令解释
docker run -it --name=auto-annotate -p 1888:1888 --gpus all --ulimit memlock=-1 --privileged --cap-add=ALL --ipc=host -u 0 -v ~:/app grounding-dino:v2
1、docker run: 启动一个Docker容器。
2、-it: 分配一个伪终端,并保持标准输入打开以便与容器进行交互。
3、--name=auto-annotate: 为容器指定名称为 "auto-annotate"。
4、-p 1888:1888: 将容器的端口1888映射到主机的端口1888,允许通过主机访问容器中的服务。
5、--gpus all: 启用容器内的GPU支持,使其能够使用所有可用的GPU。
6、--ulimit memlock=-1: 设置内存锁定的软限制和硬限制为无限制,这在容器需要锁定大量内存时可能很有用。
7、--privileged: 赋予容器所有的特权,这意味着容器内的进程可以获得主机上所有的特权。
8、--cap-add=ALL: 将所有Linux特权添加到容器中,增加容器内进程的权限。
9、--ipc=host: 使用主机的IPC命名空间,这使得容器与主机共享进程间通信。
10、-u 0: 以用户ID 0 (root用户) 的身份运行容器。
11、-v ~:/app: 将主机上用户的主目录(通过~表示)挂载到容器内的 /app 目录,允许在主机和容器之间共享文件。
12、grounding-dino:v2: 使用的Docker镜像的名称及版本。
大佬{:10_298:}
页:
[1]