Handsome_zhou 发表于 2023-5-8 15:45:58

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镜像的名称及版本。






yinda_peng 发表于 2023-5-10 22:09:04

大佬{:10_298:}
页: [1]
查看完整版本: dock深度学习容器