docker 安装与使用
目录
- 1.安装 ubuntu1804 安装nvidia-docker
- 2. docker搜索镜像仓库
- 3.docker 常用命令
- 4. docker pull #从仓库拉取镜像 这个网址上面搜索https://registry.hub.docker.com/
- 5.创建容器
- 6.创建好容器并且进入已经在运行的容器
- 7.容器没有打开,需要先打开容器再进入
- 8. ssh可以直接连接到docker内---创建容器的时候进行过端口映射
- 9.镜像打包保存与加载
- 保存容器,其他机器导入该容器 new 2022年07月13日16:03:13更新
- 保存容器,其他机器导入该容器 ---》》》这种方法试了到另外机器nvidia-smi 没有,用不了cuda
- 保存镜像到本地
- 11. 程序后台运行与刷新查看日志
- 12. 显卡驱动掉了重装驱动之后,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
好记性不如烂键盘---点滴、积累、进步!