可参考学习地址: 极客学院docker教程,还不错,能够参考docker
下载地址:Dockerhub地址ubuntu
有两种方式能够得到新的镜像windows
在terminal中输入以下命令:bash
sudo Docker pull tingtinglu/docker
学习
注:
① tingtinglu/docker是dockerhub上的pre-built image的名字
② 如何获取pre-built image的名字?须要在dockerhub上搜索本身须要的imageui
详细介绍见docker的官方文档:build your own image,介绍来如何利用dockerfile编译本身的镜像this
(1)获取dockerfile(即下载名称为dockerfile的文件,内容为构造docker的一些命令)spa
(2)利用terminal的cd命令进入到dockerfile所在的文件夹.net
(3)在名称为“dockerfile”的文件所在的文件夹下(即terminal cd到该文件夹),执行以下命令命令行
docker build -t ImageName .
注1:ImageName是利用dockerfile生成的image的name(自行设置)
注2:不要忘记ImageName后面的点“.”
有时候,已经获得了一个image,但须要往该image中作新的更改,例如,想要在docker的opt路径下添加一个新的路径workspace,此时,能够经过dockerfile进行,方法以下:
① 新建一个dockerfile,添加以下内容
RUN mkdir /opt/workspace
② 利用terminal进入该dockerfile所在路径,而后,built该dockerfile,即执行以下命令:
docker build -t ImageNameOld
必定要注意,这里的ImageNameOld是你想要添加该变化的那个image的名字
在命令行中输入相似以下的命令:
sudo docker run -it --rm -p 8888:8888 -v `pwd`/workspace:/opt/workspace -v `pwd`/data:/root/data tingtinglu/deepdock
下面对该条命令进行剖析
(1)-p 8888:8888
将docker中的jupyter的8888接口与本机的8888接口关联
(2)-v `pwd`/workspace:/opt/workspace
将当前路径下(由`pwd`)的workspaace文件夹映射到docker中的opt路径下的的workspace文件夹,这样,docker下的opt/workspace就指向来本机的`pwd`/workspace文件夹;
要实现该目的,还有一个办法:利用terminel进入到本机的workspace路径下,而后: -v ¨$(pwd):/opt/workspace¨
具体的图示以下:
此时,再进入docker后,docker的/opt/workspace/中的内容就变为的本机的workspace中的内容;
能够认为,不管原来docker的/opt/workspace中是否由内容,如今该workspace的内容都被本机的workspace覆盖来,即docker的opt/workspace此时再也不指向daocker中的opt/workspace,而只是指向本机的workspace文件夹
(3)有时,docker可能不能上网,那么,能够加入--net=host
,即完整的命令以下:
sudo docker run -it --rm -p 8888:8888 --net=host -v `pwd`/workspace:/opt/workspace -v `pwd`/data:/root/data tingtinglu/deepdock
(4)若是是windows系统,那么,文件夹映射须要绝对路径
即须要以下命令:
sudo docker run -it --rm -p 8888:8888 --net=host -v `pwd`/workspace:/root/opt/workspace -v `pwd`/data:/root/data tingtinglu/deepdock
而且,windows目前只支持C盘!必定要注意!
注:docker的指令模式是:标示+参数,即:[sudo] docker [flags] [command] [arguments]
eg.: docker run -i -t ubuntu /bin/bash
sudo docker images
会获得本机的全部images的信息
sudo docker ps
显示的信息以下:
Container Id | IMAGE | command | Created | status | ports | names |
---|---|---|---|---|---|---|
container的ID | 生成该container的image的名称 | 生成该container的时间 | 该container的状态 | ContainerName(自动分配) |
sudo docker exec -it containerName bash
图例:
(1)ls
列出docker container下的文件夹
能够看到,在container的ls文件夹下,有两个文件夹,分别为caffe和workspace
(2) cd..
返回到当前文件夹opt的上一级文件夹
而且列出该文件夹下的全部文件ls
能够看到该container的全部文件夹
(3)这里应该注意:
-v `pwd`/workspace:/opt/workspace
使得本机的当前路径`pwd`下(`pwd`为生成docker container时所在的路径)下的workspace文件夹与docker container中的opt文件夹下的workspace发生映射关系
-v `pwd`/data:/root/data
使得本机的当前路径`pwd`下的data文件夹与docker container中的root文件夹下的data发生映射关系
若是对docker的作了一些更改,而且,这些更改不是安装了jupyter这样的软件,而只是安装了一些package,那么,保存新的镜像只须要:
sudo docker commit containerID newImageName
containerID为要保存的容器的ID,newImageName为新image的名字
例如:ting/caffe:version1这样的名字,其中,version1为新容器的flag,能够用来标识新image的版本信息
从主机中移除镜像 sudo docker rmi 镜像名称
中止正在运行的container sudo docker stop containerName
移除某个container sudo docker rm containerID
注:输入ID时,没必要须输入完整的ID,通常输入前几个字符即可以识别出
docker rm <containerid>
即8a1faaf9d24b
将该container移除Cannot connect to the Docker daemon. Is the docker daemon running on
this host?
1.最近发现,本身本机的镜像有许可能是none,通过查询发现缘由多是:
重复pull同一个tag的镜像,而且,在pull新的镜像时(与本机已有的旧镜像具备相同的tag),旧镜像已经被容器占用,那么,在pull新镜像后,以前被占用的旧镜像就会变为none
2.在本机书写dockerfile,该dockerfile用到了本机的镜像A(From A),利用该dockerfile build 镜像B,那么,镜像B被称为镜像A的child