docker的使用方法

docker技术

同一个操作系统内跑多套不同版本依赖的业务
docker可以使同一个物理机中进程空间,网络空间,文件系统空间相互隔绝
虚拟机弊端:每个需要安装操作系统,太重量级,资源需要提前分配好

docker在训练模型方面的好处:

  • 配置环境快,conda可能要半天到一天,docker只需要几个小时或着更短
  • 大型项目yolo,paddle,mmlab都有相应的docker仓库,可以一键拉去配置环境和代码 https://hub.docker.com/r/ultralytics/yolov5

部署程序

  • 开发环境
    win+java
  • 测试环境(?ubuntu)
    传代码
    装依赖
  • 生产环节

docker可以上传运行环境+源码,流水线快速交付

Ubuntu Linux的安装

  1. 安装docker
    首先安装curl
sudo apt install curl

一键安装docker


curl -fsSL https://get.docker.com | bash
  1. 报错 GPG error
sudo dpkg -i /home/Downloads/cudnn-local-repo-ubuntu2204-8.5.0.xxx.deb
报错建议:
sudo cp /var/cudnn-local-repo-ubuntuxxx.gpg  /usr/share/keyrings/
  1. 安装nvidia-docker
    介绍:
    https://developer.nvidia.com/zh-cn/blog/nvidia-docker-gpu-server-application-deployment-made-easy/
    官方安装步骤:
    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker

# Setup the package repository and the GPG key:
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
            
# Install the nvidia-container-toolkit package
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker

# Test nvidia-smi with the latest official CUDA image
sudo docker run --runtime=nvidia --gpus all --rm nvidia/cuda:11.7.1-base-ubuntu22.04 nvidia-smi

报错

Error response from daemon: manifest for nvidia/cuda:11.0 not found: manifest unknown: manifest unknown

命令中需要到下面网址找到对应的版本
https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md

  1. 设置权限
cd /var/lib
sudo chmod -R 777 docker
cd /var/lib/docker
  1. 从镜像中拉取容器
#yolov5
docker pull ultralytics/yolov5
# paddle
docker pull paddlepaddle/paddle
  1. 使用下载好的镜像创建容器
  • paddle
docker run --name paddle_docker -dit --network=host --gpus all -v $PWD:/paddle registry.baidubce.com/paddlepaddle/paddle:2.4.1-gpu-cuda11.7-cudnn8.4-trt8.4 /bin/bash

注:-v $PWD:/paddle 表示的是主机和容器互联的文件夹,如果保证环境纯洁,需要复制一个里面文件到容器中,而不是主机直接操作

  • yolov5
sudo docker run --dit --network=host -it --gpus all -v $PWD:/yolo ultralytics/yolov5:latest 
  1. 网络配置
# 安装ifconfig
apt install net-tools
# 安装ping
apt-get install inetutils-ping

互通
ifconfig -a查看本机ip

  1. 使用
sudo systemctl start docker
sudo docker ps -a
#选择容器
sudo docker start 31a
docker images 查看现在的镜像

debug
如果出现docker网卡占用无线网卡的情况,尝试

sudo /etc/docker
vim daemon.json

在这里插入图片描述

常用语法

docker ps 查看容器
docker start 容器id
exit 退出容器
docker exec -it [容器id] /bin/bash  进入一个正在运行的容器

链接VSCode(方便好用)

  1. 下载vscode,添加扩展dockerRemote Explore
  2. 添加用户组
sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
sudo systemctl restart docker   # 重启docker
docker ps    #测试docker命令是否可以使用sudo正常使用
  1. 在VScode中右键启动需要的容器
    点击docker小蓝鲸
    在这里插入图片描述
    当标为小三角时,表示容器已经启动,再次右键点击attach Visual Studio Code,打开容器
    在这里插入图片描述
    新窗口选择open folder打开文件夹,找到文件位置即可在命令行中调试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值