好久不使用服务器,docker的一些指令动不动就忘记了。因此今天特意抽点时间总结一下。
大部分人使用docker只用到简单的功能,目的就是快速的统一开发环境,免去重复配环境的苦恼。
对于镜像、容器、仓库的概念,就不啰嗦介绍了。
本文用来讲解怎么样快速使用docker。
1.首先,登录自己的账户,查看仓库中现有的镜像和其对应的环境说明,希望能找到一个自己需要的。
sudo nvidia-docker images
当然指令中的nvidia-docker可以换成docker(如果报错的话)。
镜像如果已经被装好了,找到一个需要使用的镜像,举例来说,ID是a04eeffb……(使用前几位就行了)
2.然后利用这个ID号,创建自己的容器:
sudo nvidia-docker run -dit --name Mike --net=iccd --mount type=bind,source=/home/mike,target=/mnt a04eeffb /bin/bash
这个指令的意思是,把容器起名叫Mike,使用叫iccd的网络,使用绑定挂载,内容用linux下home目录下的mike用户的内容,挂载在虚拟机的/mnt目录下,使用ID号为a04eeffb的镜像。
这个指令使用以后,虚拟机就建好了。
对于虚拟机,有如下几种基本操作:
3.开启容器
sudo nvidia-docker container start Mike
4..关闭容器
sudo nvidia-docker container stop Mike
5.进入容器
sudo nvidia-docker exec -it Mike bash
这里需要注意三点:
第一,-it的意思是,使用交互式的形式访问容器;
第二,进入容器是指从ubuntu下进入虚拟机,退出容器只要按exit就行,但是退出容器并不等于关闭容器,容器还在后台运行着,需要按上面2所述关闭容器。
第三,进入虚拟机后,cd到/mnt下,才能看到/home/mike下的文件。
6.删除容器
sudo nividia-docker rm Mike
这样不需要用这个容器的时候,就可以把容器给删掉,省的占内存。
7.把容器内配置好的环境打包成镜像,上传至本地仓库。这样下次在别的账户或者机器上,可以直接使用这次配好的环境,通过镜像id号直接创建容器。
sudo nvidia-docker commit --author "mk" Mike mike_image:0.4.1
这个指令的意思是,这个镜像的作者叫mk,打包的镜像所在的容器名是Mike,传到仓库里,名字叫mike_image, 附带一个tag是0.4.1。附上语法:
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
这样下次再输入nvidia-docker images的时候,就可以在仓库里看到自己的镜像了:
REPOSITORY TAG IMAGE ID CREATED SIZE
mike_image 0.4.1 f9dfeb40ff5e 18 seconds ago 3.24GB
之后就可以用Image ID:f9dfeb……创建自己的容器了,免得二次配环境。
8.另外,如果是不想要的镜像如何删除?
sudo nvidia-docker rmi f9dfeb40ff5e
后面的ID号是镜像号。不过这样未必能删掉镜像,因为如果镜像正在被一个容器使用,需要先删除container,才能真正把镜像删除掉。
9.如何查看现有的容器?
sudo nvidia-docker container ls
10.如何查看服务器的GPU使用情况?
nvidia-smi
查看GPU使用情况,然后选择合适的显卡跑代码。
如果是服务器的管理员,有一个网址可以深入的学习:
https://yeasy.gitbooks.io/docker_practice/content/CHANGELOG.html
对于普通的开发者或者是科研人员,只要掌握上述的10条指令就完全够用了。