1.写在前面的话
- 零基础想要部署一个能用的gpu版本pytorch不容易,要注意devel和runtime的区别
- 操作docker要格外小心,删除镜像的时候一定要注意了
- 一定要会用docker hub,学会pull, push(没有试过)
- 一定要分清楚image和container的区别,image就是一个可以公用的环境,里面有你build好的所有包(通过pip, yum, apt-get等安装),而container就是通过image run出来的实例,通过这个实例我们就可以进行后续的操作了
2.开始docker之旅
1.下载docker
- 推荐下载docker版本:19+,这样在run的时候可以直接使用-
-gpus all
来启动nvidia-docker,老版本需要使用nvidia-docker run
2.pull镜像
- 运行
docker pull
去拉取pytorch镜像,由于我们要使用gpu版本的pytorch,所以pull的是含有cuda和cudnn的,此外需要安装devel版,不安则不能查看到gpu信息,并且不能对cuda进行编译,如果实际项目中需要使用cuda进行编译,则会失败
3.编写Dockerfile文件
- Dockerfile是构建image最为重要的一步了,如果只是想test pytorch,那只需要写一句话:
FROM pytorch/xxx
- 如果想在image中安装其他的包,则使用
RUN
即可,注意区别windows,centos,linux等不同os下的安装命令,这个只有不断尝试才会懂得如何去编写 - 还有很多命令,比如
CMD
,COPY
,WORKDIR
,在具体的需求下我相信你会学会的 - 还有一点,Dockerfile中的命令是分层build的,在不破坏原始build顺序下,docker会有cache机制,这样只有在有新的层出现时,才会重新build,节省时间
- 最后,在终端输入命令:
docker build -t image_name -f Dockerfile_path .
即可完成image的build过程了,需要注意的是:①Dockerfile_path必须指定到文件,而不是目录;②最后有一个点哦,不要忘记了
4.运行镜像,创建容器
- 直接运行命令:
docker run -idt -v xx:xx -p xx:xx image_name
即可完成容器的创建,并且idt由于是交互式后台运行的,所以会给出容器的id,如果需要使用gpu,则使用--gpus all
- 如果你想进去到容器里,直接运行命令:
docker exec -it id bash
,当然了,你也可以不这么麻烦,直接运行命令:docker run -it -v xx:xx -p xx:xx image_name bash
,如果你想在run的同时,进行容器内shell脚本的运行,直接在bash
后跟上容器内的shell脚本路径即可,需要注意的是,这样做后,一旦shell文件执行完毕,就会直接关闭容器了
5.写在最后的话
- 且行且珍惜