文章目录
前言
主要记录在linux服务器环境中安装docker,和docker的相关使用说明
一、简介
- Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制,相互之间不会有任何接口。
- docker是一个大的虚拟机环境,其中包含很多的虚拟机镜像(images),而这些镜像会包含已经配置好的环境;容器则是基于这些镜像,实例化得到的虚拟机,在某一个容器内可以随意修改环境配置,而不会存在环境之间的相互干扰。
- Docker的好处之一,就是在Container里面可以随意折腾,不用担心弄崩Host的环境。
二、安装docker
服务器上已经安装好了docker,不需要进行安装操作了,具体安装步骤可以参考:
https://blog.csdn.net/qq_41204464/article/details/97539265
三、docker镜像
Docker官方文档:https://docs.docker.com/
Docker镜像仓库:https://hub.docker.com/search?type=image
Docker镜像仓库国内版:http://hub.daocloud.io/‘
- docker基本操作
可参考: https://blog.csdn.net/runingman0000/article/details/107289037
docker ps -a # 查看docker
docker images -a # 查看docker镜像
docker rm [docker id] # 删除docker
docker rmi [docker image id] # 删除docker image
四、新建docker镜像
1.通过Dockerfile的方式来构建
具体可参考
https://blog.csdn.net/shiqiangdexin/article/details/52472195
2.基于DockerHub上的开源镜像进行修改,构建适用于自己的镜像。
以pytorch为例,使用docker search pytorch在DockerHub(https://hub.docker.com/)上搜索公开的镜像。
找一个torch1.7的docker(自己需要哪个就找哪个),pull下来
比如从torch官方的docker tags里面找到我们想要的torch1.7 develop版本。找到后,在本地(服务器上)运行:
docker pull pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel
上述操作是将这个docker先拉到本地服务器。
五、新建docker容器
初次使用docker时,要新建属于自己的容器,之后所有的训练任务可在该容器内完成,新建容器的常用指令为:
1.进入docker
docker run --runtime=nvidia -it -v DIR_LOCAL:DIR_CON -p PORT_LOCAL:PORT_CON --name=test --ipc=host --net=host pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel
其中,-it表示使用交互式界面新建容器,即工作在/bash/bin;
-v表示将本地路径映射至容器中的相应路径;
DIR_LOCAL表示本地路径;
DIR_CON表示容器内的路径;
-p表示将本地端口与容器端口建立映射,深度学习中,在使用tensorboard时会用到;
–name表示为自己的容器取名字,方便下次使用该容器时使用NAME来调回,而不需要使用ID
2.示例
docker run -it --gpus all --shm-size 128G -p 1003:1003 -v /data1:/data1 -v /home/moxue:/home/moxue -d --name moxue_v1 -- b07463d2d541 bash
–gpus all:表示使用服务器的所有卡; --shm-size:共享内存大小
3.进入自己创建的容器
docker exec -it moxue_v1 /bin/bash
进入docker后就可以配置自己的环境了,此时可以跳转到
https://blog.csdn.net/weixin_41891632/article/details/134164079?spm=1001.2014.3001.5502用conda创建自己的python虚拟环境。
4. 可以退出docker
exit
六、docker commit :从容器创建一个新的镜像。
这里是直接创建到本地,如果要commit到docker hub的话需要进行翻墙连到docker hub才行
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
其中OPTIONS可选:
-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停。
查看并找到配置好的docker的id
docker ps -a
找到自己要commit的docker id,我这里用的是名为moxue_v1的容器,id是31405b5f1856,然后
docker commit -a "moxue" -m "this is pytorch1.7_python3.7" 31405b5f1cf2 moxue_v1:pytorch1.7
输入上面指令就会在本地创建一个Tag为pytorch1.7,repository为moxue_v1的image镜像
使用docker images可以查看:
docker images
继续第五步骤,开始创容器等操作。
七、将已有的docker打包成tar以及load打包好的docker镜像。
docker ps -a 查看要打包的容器镜像id和name
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]],将docker镜像commit成新的镜像
docker commit 31405b5f1cf2 moxue_test:cuda11.7_torch1.12
docker images -a 查看新生成的镜像名字和tag moxue_test:cuda11.7_torch1.12
docker save -o tar包名称.tar 待打包镜像名称:待打包镜像版本(在某路径执行,tar包就会保存在那个路径)
docker save -o moxue_test.tar moxue_test:cuda11.7_torch1.12
scp -r moxue_test.tar target_dir 将生成的tar包用scp等传输命令传输到新的机器中
这时会在新的机器中生成 moxue_test:cuda11.7_torch1.12 镜像,用load命令直接load
docker load [OPTIONS] tar包名称.tar
docker load < imageName.tar 用于从标准输入载入镜像。
docker load -i imageName.tar 用于从文件载入镜像。
docker load -i moxue_test.tar
此时会生成新的镜像,进入上述第五步骤,开始新建容器即可
八、vscode里连接服务器中自己的docker
1.打开vscode远程资源管理器,连接进入服务器
安装SSH扩展插件
左下角出现服务器的IP,说明已经连上了服务器。
具体docker相关可参考:
https://zhuanlan.zhihu.com/p/83663496
https://blog.csdn.net/QMW19910301/article/details/88070159
https://www.cnblogs.com/kevingrace/p/9599988.html