大家在配置相关环境的时候,经常会有一些问题(系统不兼容, 软件包版本不对,tensorflow、pytorch版本杂乱,配置过程复杂,难于管理)。比如同样地安装tensorflow-gpu或者pytorch, 可以使用anaconda可以有效配置依赖;使用python原版需要自己配置cuda、cudnn等依赖。

但是,使用docker,可以通过一行命令: 

docker pull tensorflow/tensorflow

解决问题。相关依赖都配好。

先说说Docker容器(container)。

容器就一种标准化的软件单元,它将运行某个程序所需要的所有依赖和环境进行了打包,这样可以在另一个操作系统下快速迁移。可以理解为是一种不带GUI的虚拟机,但是又有不同。由于容器共享主操作系统的内核,在速度上相比虚拟机要更快。

镜像就是软件打包之后的独立、可执行的包,通过定制化镜像或在网上拉取官方发布的相关环境镜像,可以快速实例化该镜像为容器。

简单来说,就是通过镜像来实例化一个容器,这个容器是一个集成了操作系统(ubuntu、Centos等)和各种环境依赖(cuda, python packages, anaconda)可执行单元。在本机,可以通过实例化容器,来构建一个具有完整依赖的应用。

具体安装方式可参考官网:https://docs.docker.com/get-docker/

先来说一下docker的相关指令.

镜像相关命令:

查看本地镜像:    docker images

docker anaconda环境 docker和anaconda_vs配置pytorch环境

每个镜像的命名方式为:REPOSITORY:TAG,并且对应唯一IMAGE ID。镜像可以通过 docker pull命令对dockerHub上的开源镜像进行拉取,也可以自己在容器里面配置好相关环境,导出自己的定制镜像。

删除镜像:

docker rmi xxx

保存镜像:

docker save -o xxx xxx;

例子:

将镜像pytorch:1.6.0-cuda10.1-cudnn7-opencv4.4保存为 my_pytorch.tar 

docker save -o my_pytorch.tar pytorch:1.6.0-cuda10.1-cudnn7-opencv4.4

从tar创建镜像:

docker load

例子:从上述归档文件创建镜像:

docker load < my_pytorch.tar

容器相关指令:

查看容器:

docker ps [options]

可选参数有 -a:显示所有容器,包括未运行的  -f: 根据条件过滤显示内容

例子:查看所有容器

docker anaconda环境 docker和anaconda_vs配置pytorch环境_02

每个容器有对应的CONTAINER_ID和NAMES,可以设置相应的本机端口与容器端口的映射,方便ssh连接远程容器进行调试。

删除容器:

docker rm CONTAINER

创建容器:

docker run [options] IMAGE

介绍常用可选参数: 

-i -t 以交互模式运行容器,为容器分配一个伪输入终端 

-v 本机目录与容器目录的映射 

-w 指定容器的工作目录 

-p 端口映射

以创建pytorch容器为例:

nvidia-docker run -it —name my_pytorch -v /home/data:/work/data -w /work pytorch/pytorch /bin/bash

注意:需要本机有NVIDIA显卡才能使用镜像中装好的cuda环境.

这样就创建了容器,并且以/bin/bash的方式进入了容器的终端界面。这个时候输入exit可以退出容器终端,回到本机终端

docker anaconda环境 docker和anaconda_tensorflow_03

注意:使用run命令创建完容器之后,不能对容器的相关配置进行修改,比如说目录映射,端口映射,shm—size(训练时需要设置为1G以上,不然缓存不够用),所以在run时需要先设置好。并且映射的目录,在容器里和本机修改都会同步到对应目录,很方便。

第一次退出的时候,容器会默认关闭,这个时候需要重新启动容器

docker start torch_16

然后使用

docker exec -it torch_16 /bin/bash

重新进入容器:

docker anaconda环境 docker和anaconda_tensorflow_04

这里的pytorch使用的是官方开源的镜像,可以使用conda list查看已安装的包(只显示了部分)

docker anaconda环境 docker和anaconda_docker anaconda_05

可以看到环境都给你配好了,很方便,省去了自己安装东西的麻烦。同时,他又与本机共享网络等,可以随时自己pip install or conda install你的东西.使用命令可以查看容器的系统版本。

docker anaconda环境 docker和anaconda_docker anaconda_06

为了测试pytorch是否可用,可以输入如下代码:

docker anaconda环境 docker和anaconda_docker anaconda_07

完美运行!



docker anaconda环境 docker和anaconda_tensorflow_08