在线和离线环境下使用Docker配置pytorch cuda环境

一、安装Docker

1.1在线安装

1.由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本

sudo apt-get remove docker docker-engine docker-ce docker.io

2.更新apt包索引

sudo apt-get update

3.安装以下包以使apt可以通过HTTPS使用存储库(repository)

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

4.添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

5.使用以下命令来设置stable存储库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

6.再更新一下apt包索引

sudo apt-get update

7.安装最新版本的Docker CE

sudo apt-get install -y docker-ce

1.2离线安装

1.Ubuntu对应版本名称

  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)
  • Ubuntu Xenial 16.04 (LTS)

2.打开对应版本名称的链接:https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/,分别下载

  • containerd.io*.deb
  • docker-ce-cli*.deb
  • docker-ce*.deb

3.安装,注意顺序

sudo dpkg -i containerd.io*.deb docker-ce-cli*.deb docker-ce*.deb

2.验证docker

1.查看docker服务是否启动

systemctl status docker

2.若未启动,则启动docker服务

sudo systemctl start docker 

3.hello-world验证是否成功安装

sudo docker run hello-world

3.常用Docker命令

https://www.runoob.com/docker/docker-command-manual.html

1.信息

Commands Comments
info 显示Docker系统信息
inspect 显示镜像/容器基本信息
version 显示Docker版本信息

2.镜像管理

Commands Comments
build 通过Dockerfile创建镜像
images 列出所有镜像
tag 重命名镜像
history 查看指定镜像的创建历史
rmi 删除一个或多个镜像
tag 标记镜像并将其归入某一仓库
pull 从镜像仓库中拉取或者更新指定镜像
cp 用于容器与主机之间的数据拷贝
save 将一个或多个镜像保存为tar包
load 通过tar包载入镜像
import 通过tar包载入容器,恢复为镜像,可以指定新名称

3.容器生命周期管理

Commands Comments
run 创建一个新的容器并运行一个命令
create 创建一个新的容器但不启动它
restart 重启一个或多个容器
start 启动一个或多个容器
stop 停止一个或多个运行中的容器
kill 杀死一个或多个运行中的容器
pause 暂停一个或多个运行中的容器中的所有进程
unpause 恢复一个或多个运行中的容器中的所有进程
rm 移除一个或多个容器
rename 重命名容器

4.容器操作

Commands Comments
ls 列出所有容器
top 查看容器中运行的进程信息
port 列出指定的容器的端口映射
exec 在运行的容器中执行命令
commit 将容器打包为镜像
export 将容器的文件系统导出为tar包

二、安装nvidia-docker

因为docker不支持GPU加速,所以需要安装nvidia-docker

官方文档:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

1.1在线安装

1.安装nvidia-docker

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

2.若安装成功则可以输出显卡信息

nvidia-docker run --rm nvidia/cuda:10.1-base nvidia-smi

1.2离线安装

1.下载deb包,apt默认保存在/var/cache/apt/archives目录下

sudo apt install -d -y nvidia-docker2

下载了5个包:

2.查看deb包的依赖关系

apt-cache dependens package_name

3.按照依赖关系依次安装

  • libnvidia-container1
  • libnvidia-container-tools
  • nvidia-container-toolkit
  • nvidia-container-runtime
  • nvidia-docker2

三、部署pytorch

镜像(image),是一个配置好的环境;容器(container),是image的具体实例。镜像和容器的关系相当于面向对象中类与对象的关系。

1.拉取镜像

docker pull pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel

2.查看已下载的镜像

docker images

3.为该镜像创建一个容器

  pytorch:1.6.0-cuda10.1-cudnn7-devel镜像需要nvidia-docker run或者docker run --runtime=nvidia来启动

nvidia-docker run --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash

  或

docker run --runtime=nvidia --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash

  也可以修改/etc/docker/daemon.json,在第一行添加"default-runtime": "nvidia"

{
    "default-runtime": "nvidia"
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
docker run --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash

  docker run参数:

Args Comments
--rm 退出时自动移除容器
-it 启动交互式终端
-v 将主机的一个目录映射到容器下
-w 指定容器内的工作目录
-p 将主机端口映射到容器端口
--name 容器名称

4.如果在容器内配置了其他环境,可以将容器导出为镜像

docker commit container_id image_name:tag

5.退出容器,在容器内bash输入

exit

6.停止/开启容器

docker stop container_id/docker start -i container_id

通过Dockerfile部署

1.Dockerfile中的参数(D必须大写)

Args Comments
ARG 参数
FROM 指定镜像源
ENV 环境变量
EXPOSE 开放暴露端口
RUN 执行命令
CMD 执行环境变量

2. 在Dockerfile所在文件夹打开终端运行,注意末尾有一个‘.’

docker build -t project_name:tag .

  或者指定Dockerfile路径

docker build -f /path/to/Dockerfile -t project_name:tag .

3.为该镜像创建一个容器

nvidia-docker run --rm -it -v host_volume:container_volume -p host_port:container_port project_name:tag /bin/bash

4.使用apt安装前需先运行

apt update

四、迁移Docker

由于/root空间不够,我们可以将docker迁移到Home目录下

1.迁移docker

sudo cp -a /var/lib/docker ~/docker

2.备份docker

sudo mv -u /var/lib/docker /var/lib/docker.bak

3.生成软连接

sudo ln -s ~/docker /var/lib/docker

五、PyCharm连接远程服务器的docker

https://zhuanlan.zhihu.com/p/52827335

PyCharm必须是专业版,社区版不提供远程服务。在interpreter中选择Docker镜像,注意Python解释器的位置。

在线和离线环境下使用Docker配置pytorch cuda环境_第1张图片

 

你可能感兴趣的:(linux)