• docker 安装与使用


    1.安装 ubuntu1804 安装nvidia-docker

    1.1
    sudo apt update
    
    1.2
    # 启用HTTPS
    sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
    
    1.3
    # 添加GPG key
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    1.4
    # 添加稳定版的源
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    
    1.5
    # 更新源
    $ sudo apt update
     
    # 安装Docker CE
    $ sudo apt install -y docker-ce
    
    

    配置nvidia-docker

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

    安装nvidia-docker2

        # 安装nvidia-docker2
        $ sudo apt install -y nvidia-docker2
         
        # 重启Docker daemon
        $ sudo pkill -SIGHUP dockerd
    

    普通用户可访问

        $ sudo groupadd docker
        $ sudo usermod -aG docker $USER
    

    如上弄了还是需要sudo,就再试试下面的2:

    1. 将当前用户加入docker组
    
    $ sudo usermod -a -G docker $USER
    
    2. 修改/var/run/docker.sock的权限
    
    $ sudo chmod 777 /var/run/docker.sock
    

    2. docker搜索镜像仓库

    https://registry.hub.docker.com/

    3.docker 常用命令

    docker images                 #查看本地镜像
    docker inspect 容器名称        #查看容器的详细信息
    docker ps                      #查看正在运行的容器
    docker ps   -a                   #查看所有容器(包括未运行的容器)
    docker stop 容器名称           #停止正在运行的容器
    docke rm 容器名称             #删除容器
    docker info                   #查看容器信息
    docker cp somefile container_name:/root/path  #把宿主机somefile文件拷贝到容器内
    

    4. docker pull #从仓库拉取镜像 这个网址上面搜索https://registry.hub.docker.com/

    docker pull dzw001/cuda11.1-cudnn8-python3.6-pytorch1.8.1-ubuntu18.04
    docker images #就可以看到刚刚下载的镜像

    5.创建容器

    #3090
    nvidia-docker run -it --name my_docker0 -v /data/:/home --shm-size 16g -p 10029:22 --privileged dzw001/cuda11.1-cudnn8-python3.6-pytorch1.8.1-ubuntu18.04 bash
    
    nvidia-docker run -it --name my_docker1 -v /data/yhl/docker_file/20220429:/home --shm-size 16g -p 10009:22 --privileged images1 bash
    
    ##挂载多个本地文件夹
    nvidia-docker run -it --name my_docker2 -v /data/yhl/docker_dir/20220422:/home -v /data/project:/home/file --shm-size 16g -p 10009:22 --privileged images2 bash
    

    6.创建好容器并且进入已经在运行的容器

    docker exec -it my_docker0 bash
    

    7.容器没有打开,需要先打开容器再进入

    docker container start  yhl
    docker exec -it yhl bash
    /etc/init.d/ssh restart
    

    8. ssh可以直接连接到docker内---创建容器的时候进行过端口映射

    ssh root@192.168.114.21 -p 10003
    passwd 123456
    

    9.镜像打包保存与加载

    ##打包镜像   ---》本地docker images可以看到,本地可以用,但是文件本地找不到  需要save才能保存本地
    docker commit container_name image_release:tag
    

    保存容器,其他机器导入该容器 new 2022年07月13日16:03:13更新

    docker ps -a ##这里可以看到需要保存容器名字,比如容器名字是contain_name1
    docker commit contain_name1 my_images:v1 # 这里contain_name1是需要保存容器的名字,这里my_images:v1是现在刚取的需要保存成的镜像的名字加上tag v1
    docker images #这个时候可以看到我们刚commit的镜像名字my_images
    docker save -o xxx.tar my_images:v1  ##xxx.tar是需要打包保存的压缩包名字, my_images:v1是需要打包镜像名字
    #完成后在当前目录就会生成xxx.tar,把这个包发送到其他机器。
    docker load -i xxx.tar #在其他机器上面load这个tar包
    docker images #就可以查看是否成功啦
    

    保存容器,其他机器导入该容器 ---》》》这种方法试了到另外机器nvidia-smi 没有,用不了cuda

    docker ps  #查看运行中的容器
    
    docker export 84b952b312df > new-contain.tar   #84b952b312df是容器号,这句话完成后会在当前目录生成new-contain
    
    
    docker import cuda11.3-python3.8-pytorch1.11-goe-quantification cuda11.3-python3.8-pytorch1.11-quantification:v1    #把压缩包拷贝到其他电脑,并导入当前电脑的docker,注意这里v1需要加上
    
    docker images  #查看镜像显示成功导入
    
    
     #用该镜像创建容器 注意这里:v1需要加上
    nvidia-docker run -it --name my——containquantification  -v /data:/home --shm-size 16g -p 10089:22 --privileged cuda11.3-python3.8-pytorch1.11-quantification:v1 bash #用该镜像创建容器
    
    

    保存镜像到本地

    docker save -o  文件名   镜像名
    docker save -o nginx.tar nginx:latest
    
    
    ## docker load(加载)
    docker load -i  文件名
    
    docker load -i mydocker.tar
    docker images 就可以查看是否成功啦
    

    11. 程序后台运行与刷新查看日志

    nohup python3 main.py &      #后台运行 
    
    tail -f nohup.out    #查看日志  不断刷新查看
    

    12. 显卡驱动掉了重装驱动之后,docker的容器起不来

    报错提示:

     docker container start MTL
    Error response from daemon: Unknown runtime specified nvidia
    Error: failed to start containers: MTL
    

    这种情况需要安装nvidia docker
    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

    #step1:
    curl https://get.docker.com | sh \
      && sudo systemctl --now enable docker
    
    #step2:
    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
    
    
    #step3
    sudo apt-get update
    
    若提示
    E: Conflicting values set for option Signed-By regarding source https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64/ /: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg != 
    E: The list of sources could not be read.
    
    到/etc/apt/sources.list.d 删除所有sudo rm -rf *
    xxx:/etc/apt/sources.list.d$ ll
    total 20
    drwxr-xr-x 2 root root 4096 8月   4 16:31 ./
    drwxr-xr-x 7 root root 4096 7月   4 19:12 ../
    -rw-r--r-- 1 root root  301 8月   4 16:31 nvidia-container-toolkit.list
    -rw-r--r-- 1 root root  401 7月   4 19:12 nvidia-docker.list
    -rw-r--r-- 1 root root  401 7月   4 19:11 nvidia-docker.list.save
    
    然后step1,2,3重来一遍
    
    #step4
    sudo apt-get install -y nvidia-docker2
    
    
    #step5
    sudo systemctl restart docker
    
    
  • 相关阅读:
    TCC
    使用RocketMQ实现分布式事务
    CentOS关机
    使用grub手动引导linux和windows
    CentOS下X Window与命令行界面的切换
    Centos下 为firefox安装flash插件
    tar.xz文件如何解压
    用Linux命令wget进行整站下载
    CentOS关闭火狐浏览器Flash过期提示
    CentOS普通用户添加sudo权限
  • 原文地址:https://www.cnblogs.com/yanghailin/p/16444235.html
Copyright © 2020-2023  润新知