ubuntu20.04安装docker环境

一、安装docker

  • 安装docker
    sudo apt-get install docker.io
    
  • 查看版本(验证 Docker 是否安装成功)
    sudo docker version 或 docker -v
    
  • 将当前用户加入 docker 用户组(避免每次运行 docker 都需要使用 sudo)
    sudo usermod -aG docker $USER
    
    注意:执行此操作后需要注销并重新登录。
  • 启动
    sudo systemctl start docker.service
    
  • 查看状态
    sudo systemctl status docker
    
  • 修改docker源修改镜像路径
    • 可以使用docker info 查看当前docker的默认存储目录。可以看到docker存储驱动程序和默认存位:
      Storage Driver: overlay
      Docker Root Dir: /var/lib/docker
    • 停止docker服务
      sudo systemctl stop docker.service
      
    • 迁移/var/lib/docker目录下面的文件到 /data/xxx/docker;(注意xxx是你自己定义的目录,找个磁盘空间大一点的目录)
      sudo cp -r /var/lib/docker/* /data/xxx/docker/
      
    • 创建或编辑 Docker 的守护进程配置文件:(默认情况下这个配置文件是没有的,这里实际也就是新建一个)
      sudo gedit /etc/docker/daemon.json
      
    • 添加以下内容:(注意xxx是你自己定义的目录)
      {
          "data-root": "/data/xxx/docker",
          "registry-mirrors": [
              "https://docker.1ms.run",
              "https://docker.xuanyuan.me",
              "docker.m.daocloud.io",
      	"docker.imgdb.de",
      	"docker-0.unsee.tech",
      	"docker.hlmirror.com",
      	"cjie.eu.org"
          ],
          "default-runtime": "nvidia",
          "runtimes": {
              "nvidia": {
                  "args": [],
                  "path": "nvidia-container-runtime"
              }
          }
      }
      
    • 保存文件并重启 Docker:
      # 重启docker服务
      sudo systemctl daemon-reload
      sudo systemctl restart docker
      sudo systemctl status docker
      
      docker info  # 校验一下是否更改成功
      docker ps -a
      docker images  # 确认之前的镜像还在
      
      # 校验是否能下载镜像
      docker run ubuntu:15.10 /bin/echo "Hello world"
      
    • 确定容器、镜像没问题后删除/var/lib/docker/目录中的文件。
      rm -rf /var/lib/docker/*
      
  • docker中使用GPU
    • 方法一: 使用nvidia-container-runtime:
      • 添加库: Link
        curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
          sudo apt-key add -
        distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
        curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
          sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
        sudo apt-get update
        
      • 安装nvidia-container-runtime:
        sudo apt-get install nvidia-container-runtime
        systemctl restart docker #重启docker
        
      • 测试验证:(启动命令中添加参数:–gpus all 或 --gpus "device=1"指定):
        docker run --gpus all --rm nvidia/cuda:11.0-base nvidia-smi
        
    • 方法二:安装 NVIDIA Container Toolkit
      • 设置 NVIDIA Container Toolkit 仓库:
        curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
        curl -s -L https://nvidia.github.io/nvidia-docker/$(. /etc/os-release; echo $ID$VERSION_ID)/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
        
      • 更新软件包索引并安装 NVIDIA Container Toolkit:
        sudo apt update
        sudo apt install -y nvidia-container-toolkit
        
      • 配置容器运行时:
        sudo nvidia-ctk runtime configure --runtime=docker
        
      • 重启 Docker 服务:
        sudo systemctl restart docker
        
      • 验证安装是否成功:
        docker run --rm --gpus all nvidia/cuda:12.0.1-base nvidia-smi
        
    • 离线安装GPU的docker环境
      前提:已经安装好了docker(需要docker版本>=19.03),可以用docker -v进行测试

      说明:Docker 19.03的发布,不赞成使用nvidia-docker2软件包,因为Docker运行时中现在已将NVIDIA GPU作为设备本地支持
      nvidia将提供原生的显卡支持,只需要安装 nvidia-container-toolkit工具包不再像使用nvidia-docker/2那样复杂配置,而且不支持用docker-compose
      在docker19以前都需要单独下载nvidia-docker1或nvidia-docker2来启动容器,docker19后跑需要gpu的docker只需要加个参数–gpus all 即可

      • 联网机器设置仓库和GPG密钥

        distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
           && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
           && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
        

        其实,distribution就是你的系统名称,例如:ubuntu22.04等,可以通过cat /etc/os-release等命令查看,查看后替换命令中的内容就行,并设置成临时变量。

      • 在联网的机器上下载包

        apt download libnvidia-container1
        
        apt download libnvidia-container-tools
        
        apt download nvidia-container-toolkit-base
        
        apt download nvidia-container-toolkit
        

        或者在NVIDIA的GitHub主页找到Ubuntu系统对应的NVIDIA Container Toolkit安装包,页面的安装包较多,搜索关键词“1.17.4”,进行下载安装包即可:

        libnvidia-container1_1.17.4-1_amd64.deb           # 基础库包,提供了最基本的功能,其他包都依赖于它
        libnvidia-container-tools_1.17.4-1_amd64.deb      # 基础工具包,依赖于 libnvidia-container1
        nvidia-container-toolkit-base_1.17.4-1_amd64.deb  # 基础组件包,依赖于前面的包
        nvidia-container-toolkit_1.17.4-1_amd64.deb       # 主要的工具包,依赖于以上所有包
        libnvidia-container1-dbg_1.17.4-1_amd64.deb       # 调试符号包,只在调试问题时使用
        libnvidia-container-dev_1.17.4-1_amd64.deb        # 开发包,只在进行开发时使用
        

        其中最后两个安装包可以选择不下载和不安装

      • 拷贝到离线机器上安装(注意:需要按顺序安装)

        # 按顺序执行
        dpkg -i libnvidia-container1
        
        dpkg -i libnvidia-container-tools
        
        dpkg -i nvidia-container-toolkit-base
        
        dpkg -i nvidia-container-toolkit
        
      • 查看NVIDIA Container Toolkit的版本以验证是否安装成功

        nvidia-ctk --version
        

        在这里插入图片描述

      • 设置Docker默认使用NVIDIA runtime

        sudo nvidia-ctk runtime configure --runtime=docker
        

        在这里插入图片描述

      • 重启docker服务

        systemctl restart docker
        
      • 创建容器

        docker run --rm --gpus all -v /home/test:/home/test  -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
        
      • 备注:

        备注说明: 
        方法一:  安装nvidia-container-toolkit,后添加—gpus参数来使用
           使用nvidia-container-toolkit的最大优点:linux主机不需要安装 CUDA toolkit,仅安装显卡驱动 cuda-drivers 即可
           sudo docker run --gpus all -v /home/test:/home/test  -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
        
        方法二:  nvidia-docker2 and nvidia-container-runtime
         安装nvidia-container-runtime,在首次运行时添加—runtime=nvidia参数,后续启动、结束都不需要再加
         sudo apt-get install nvidia-container-runtime
         sudo docker run --gpus all-v /home/test:/home/test  -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
        
      • 参考博客

二、docker基本操作(以Ultralytics为例)

# 拉取镜像
docker pull ultralytics/ultralytics:latest

# 查看端口号是否被占用
lsof -i 12345

# 创建容器
docker run --gpus all -it --name cc_yolo2 -u root -v /data:/workspace/data -w /workspace/data -p 12345:12345 ultralytics/ultralytics:latest /bin/bash

# 启动容器
docker start cc_yolo2

# 进入容器
docker exec -it cc_yolo2 bash

# 查看其torch的库安装位置
pip show torch

# 删除容器
docker rm -f 容器ID


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值