Docker 部署

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 离线安装

  1. Go to   docker download
  2. Go to pool/stable/ and select the applicable architecture (amd64armhfarm64, or s390x).

  3. Download the following deb files for the Docker Engine, CLI, containerd, and Docker Compose packages:

    • containerd.io__.deb
    • docker-ce__.deb
    • docker-ce-cli__.deb
    • docker-buildx-plugin__.deb
    • docker-compose-plugin__.deb
  4. install all the deb
    sudo dpkg -i ./containerd.io__.deb \
      ./docker-ce__.deb \
      ./docker-ce-cli__.deb \
      ./docker-buildx-plugin__.deb \
      ./docker-compose-plugin__.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 从入门到实践

  1. docker run -d -it images_id /bin/sh
    
    docker ps
    
    docker exec -it contanined_id bash
    
    change your file
    
    exit
    
    docker commit -m "提交信息" -a "作者" contain_id new_images_id:tag
    
    docker images
    
    docker save -o xxx.tar new_images_id

5 在docker 中使用GPU资源

1 在docker中使用gpu资源有以下几种方法:

  • 因为GPU属于特定的厂商产品,需要特定的driverDocker本身并不支持GPU。以前如果要在Docker中使用GPU,就需要在container中安装主机上GPU的driver,然后把主机上的GPU设备(例如:/dev/nvidia0)映射到container中。所以这样的Docker image并不具备可移植性。

    Nvidia-docker项目就是为了解决这个问题,它让Docker image不需要知道底层GPU的相关信息,而是通过启动containermount设备和驱动文件来实现的。

在你使用 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, the nvidia-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

你可能感兴趣的:(docker,容器,运维)