工作问题汇总1 Docker相关

文章目录

  • 显卡,显卡驱动,nvcc,cuda driver,cudatoolkit,cudnn到底是什么?
  • 创建image:
  • 创建容器:
  • nvidia-docker:
    • 安装
    • 创建
  • 删除容器
  • 删除镜像
  • Docker 安装、操作常用命令

显卡,显卡驱动,nvcc,cuda driver,cudatoolkit,cudnn到底是什么?

https://www.cnblogs.com/marsggbo/p/11838823.html

创建image:

去官网https://hub.docker.com/找镜像,找到命令:
docker pull yankovg/python3.8.2-ubuntu18.04
工作问题汇总1 Docker相关_第1张图片
镜像重命名:
在这里插入图片描述

创建容器:

sudo docker run -itd --privileged --pid host --network host --ipc host --name "your_docker_name" -v /path/to/your_docker_file/:/workspace   aegis1/cuda11.3.1-cudnn8-devel-ubuntu18.04 /bin/bash

docker run -itd  --privileged --pid host --network host --ipc host --name docker_py38 -v /media/liangdao:/workspace yankovg/python3.8.2-ubuntu18.04

nvidia-docker:

只有装了nvidia-docker才能访问主机的显卡。我试过2个不同的容器。
一个是普通的容器:
在这里插入图片描述
另一个是装了nvidia-docker的:
工作问题汇总1 Docker相关_第2张图片
但是,即便装了nvidia-docker,在容器中,也还是要安装torch,cuda,cudnn,他们的版本记得匹配。
工作问题汇总1 Docker相关_第3张图片

安装

参考链接:https://blog.csdn.net/Harry_Jack/article/details/120415593

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

sudo apt-get update

sudo apt-get install -y nvidia-docker2

sudo systemctl restart docker

创建

sudo nvidia-docker run -itd --privileged --pid host --network host --ipc host --name "nvidia_docker" -v /media/liangdao:/workspace aegis1/cuda11.3.1-cudnn8-devel-ubuntu18.04

删除容器

#创建两个容器
docker run -itd ubuntu /bin/bash
docker run busybox echo "hello world"
#删除所有容器
#********** Begin *********#
docker rm -f $(docker ps -aq)
#********** End **********#

删除镜像

docker rmi [image]
# 或者
docker image rm [image]

Docker 安装、操作常用命令

Docker安装命令
Linux安装Docker
// 仅此一条命令就可以搞定
yum -y install docker-io// 启动Docker 
// 同理,stop、restart意味着停止、重启Docker
service docker start

// 加入开机启动
chkconfig docker on
安装docker-compose
pip install -U docker-compose
Docker基本操作命令
创建容器
docker create Ubuntu:latest
启动容器
docker start [CONTAINER ID]
新建并启动容器
// 启动容器输出hello world之后,容器自动终止
docker run ubuntu /bin/echo 'hello world'// 启动一个bash终端,允许用户进行交互
// -t 选项让Docker分配一个伪终端并绑定到容器的标准输出上
// -i 让容器的标准输入保持打开
// 使用 Ctrl+d 或 exit 退出容器
docker run -t -i ubuntu:latest /bin/bash


// 容器以守护态运行,即后台运行
// -d 选项让Docker以守护态运行
// 运行成功会返回一个唯一的ID
docker run -itd ubuntu
终止容器运行
docker stop [CONTAINER ID]
重启容器
docker restart [CONTAINER ID]
查看当前启动的容器信息
docker ps
查看当前终止的容器信息
// 仅显示CONTAINER ID
docker ps -a -q//显示终止容器的详细信息
docker ps -a
进入容器
// 当容器使用 -d 选项后台运行之后,需要进入容器,可使用下面命令
// 该命令缺点:当多个窗口同时进入同一个容器时,所有窗口都会同步显示,当某个窗口因命令阻塞时,其他窗口
// 也无法执行操作了
docker attach [CONTAINER ID]

// 更好的选择
docker exec -ti [CONTAINER ID] /bin/bash
删除容器
// 该命令可删除处于终止状态的容器,正在运行的容器该命令不奏效
docker rm [CONTAINER ID]// 删除运行中的容器
docker rm -f [CONTAINER ID]
导出容器
// 将容器导出为test.tar
docker export [CONTAINER ID] > test.tar
导入容器
docker import test.tar test/ubuntu:v1.0
导出镜像
docker save -o quay.io-calico-node-1.tar quay.io/calico/node
导入镜像
docker load -i quay.io-calico-node-1.tar
容器重命名
docker rename [老容器名称] [新容器名称]
将容器提交为镜像
// 参数说明:[CONTAINER ID] 容器ID、test/CentOS_test_1为REPOSITORY,即存储库、v1.0版本
// -a:提交镜像作者
// -c:使用Dockerfile指令来创建镜像
// -m:提交时的说明文字
// -p:在commit时,将容器暂停
docker commit [CONTAINER ID] test/centos_test_1:v1.0
Docker数据卷及数据卷容器
挂载本地目录
// --privileged=true 设置为true在容器内才能访问挂载目录
// 这条语句是将 /data/docker_test/tets_1 目录挂载到容器的/data/test_1/目录上
// 同时启动容器

docker run -itd --privileged=true -v /data/docker_test/test_1/:/data/test_1/ ubuntu:latest
数据卷容器
挂载数据卷容器
// 1. 创建数据卷容器 dbdata,并在其中创建一个数据卷挂载到 /dbdata

docker run -i -t -v /dbdata --name dbdata centos

// 2. 可以在其他容器中使用 --volumes-from来挂载dbdata容器中的数据卷
// 3. 创建 db1、db2两个容器,并从dbdata容器挂载数据卷
// 4. 此时,容器db1、db2都挂载同一个数据卷到相同的 /dbdata目录。三个容器任何一方在该目录下写入,其他
// 容器都可以看到

docker run -i -t --volumes-from dbdata --name db1 centos
docker run -i -t --volumes-from dbdata --name db2 centos

// 5. 可以多次使用 --volumes-from参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了容器卷的容器来
// 挂载数据卷

docker run -d --name db3 --volumes-from db1 centos
备份
// 首先利用centos镜像创建容器worker。使用 --volumes-from dbdata 参数来让worker容器挂载
// dbdata容器的数据卷;使用 -v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup
// 目录。容器启动后,使用 tar cvf /backup/backup.tar /dbdata命令来将 /dbdata下的内容备份
// 为容器内 /backup/backup.tar,即宿主主机当前目录下的backup.tar

docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos tar cvf /backup/backup.tar /dbdata
恢复
// 1. 创建一个带有数据卷的容器dbdata2
docker run -v /dbdata --name dbdata2 centos /bin/bash

// 2. 创建另一个容器,挂载dbdata2的容器,并解压备份文件到所挂载的容器卷中即可
docker run --volumes-from dbdata2 -v $(pwd):/backup --name worker ubuntu bash

cd /dbdata

tar xvf /backup/backup.tar
 

你可能感兴趣的:(工作,docker,容器,运维)