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

posted @ 2022-07-04 19:41  无左无右  阅读(239)  评论(0编辑  收藏  举报