在线和离线环境下使用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.打开对应版本名称的链接:Index of 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命令

Docker 命令大全 | 菜鸟教程

1.信息

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

2.镜像管理

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

3.容器生命周期管理

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

4.容器操作

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

二、安装nvidia-docker

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

官方文档:Installation Guide — NVIDIA Cloud Native Technologies documentation

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参数:

ArgsComments
--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必须大写)

ArgsComments
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

PyCharm+Docker:打造最舒适的深度学习炼丹炉 - 知乎

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

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值