一、简介
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。换句话说,就是将配置好的环境打包成镜像,我们可以直接使用别人的镜像(搭好的环境),我们只需提供硬件支持。这也相当于虚拟机,但比windows里安装的linux虚拟机所占的内存要小,便于转移。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
二、 安装
1. Docker安装
官网安装教程
使用命令sudo docker run hello-world
测试是否安装成功
2. Nvidia-docker安装
NVIDIA提供用来支持docker镜像使用gpu的。
查linux安装命令
使用命令sudo nvidia-docker run --rm nvidia/cuda nvidia-smi
测试
3. 深度学习镜像安装
国内深度学习镜像网站deepo
下载各种框架docker pull ufoym/deepo
或者只下载其中某个指定的镜像,如jupyter notebook版的镜像 ,使用sudo docker pull ufoym/deepo:all-jupyter-py36-cu100
使用命令docker images
可以查看已下载的镜像
三、Docker操作
1.概念
image,镜像,是一个配置好的环境,相当于类文件。 container,容器,是镜像的具体实例。 image和container的关系,相当于面向对象中类与对象的关系。
如何查询命令参数: docker
可以看docker客户端有那些基本命令; 对应每一条命令,想看看具体是做什么的,可以在后面加一个--help
查看具体用法,例如对于run命令: docker run --help
常见命令:
docker images:查看镜像
docker ps:查看运行容器
docker run -it(交互模式,有控制台) --rm -v(磁盘映射)
docker tag imageid 位置:name
docker rename containername newname
docker commit containerid[container name] tag(相同tag可覆盖)
docker cp拷贝文件到本地
docker search [options] term 从Docker Hub中搜索并且显示你所需要的镜像
docker rmi [OPTIONS] IMAGE [IMAGE...] 删除本地一个或多个镜像
docker load [OPTIONS] 载入镜像文件
2. 容器操作
(1)容器的创建、查看、删除
docker run [-it] some-image
创建某个镜像的容器。注意,同一个镜像可以通过这种方式创建任意多个container. 加上-it
之后,可以创建之后,马上进入交互模式。
docker ps
列出当前运行的容器
docker ps -a
列出所有的容器,包括运行的和不运行的
docker rm container-id
删除某个容器
(2)容器的启动、进入、退出:
docker start [-i] container-id
启动某个容器,必须是已经创建的。 加上-i
参数之后,可以直接进入交互模式。
除了通过-i进入交互模式,还有一种方法,那就是通过attach: docker attach container-id
进入交互模式之后,退出但保持容器运行,按CTRL+Q+P
三个键 - 退出,并关闭停止容器,按CTRL+D
或者输入exit
再回车
注:Ctrl+P+Q按的时候有时候会不灵,多按几次!
容器的停止、重启: docker stop container-id docker restart container-id
3. Docker环境下安装Anaconda
参考
Docker,救你于「深度学习环境配置」的苦海 (超详细,本文大部分参考自这篇)
Docker 教程 | 菜鸟教程
Docker 镜像及容器操作命令介绍