docker学习(2)--基础命令

  转载请注明源出处:http://www.cnblogs.com/lighten/p/6875355.html

1.基本命令

  搭建好docker环境之后,使用docker help命令查看docker的基本用法: docker COMMAND.

  

  

  

  目前我们较为常使用的是commands下面的指令,如果使用swarm相关功能会用到management commands。目前我使用的是17.03.1-ce,后续版本功能应该会更加细分,可能会替换成management来使用。比如docker images列出所有镜像,和docker image ls的功能是一样的,通常我们习惯使用docker build构建镜像,也可以使用docker image build命令。本文还是介绍commands的相关命令,management的命令更多,熟悉了其实都一样。主旨还是为了学会怎么使用docker,命令不会用就通过docker swarm --help的方式去查看。

2.命令详解

  命令太多,介绍不完,这里介绍一些使用docker时接触比较频繁的命令。

2.1 attach

  连接一个运行中的容器。

  

  1.detach-key: 覆盖脱离容器的键序列

  2.no-stdin:不连接STDIN

  3.sig-proxy:代理进程所接收的所有字符,默认true

  attach命令不怎么使用了,被更强大的exec的命令取代了。

  detach-key用法,比如跟上H,连上容器后是bash输入H就可以退出容器,容器也不会停止运行。不加的话原本应该是CTRL+C退出的,但是没有作用,使用exit命令虽然可以退出,但是容器也停止运行了。

  no-stdin不接受任何输入,bash中输入了回车会自动退出,容器不会关闭。

  sig-proxy一般用于连接的容器不是显示bash,比如tomcat的catalina.sh运行,前台展示日志,此时退出容器只能CTRL+C,但这样容器就停止运行了,不是想要的结果,所以使用sig-proxy=false可以解决这个问题。顺带一提,如果是bash,这个是没有作用的,依旧不会退出,执行exit退出容器依旧关闭。

 2.2 build

  使用Dockerfile构建一个镜像

  命令较多,说明一下常用的命令,其它的看意思也能看明白。

  1.--tag  给镜像命名和打标签,格式时name:tag

  2.--rm  构建成功后移除临时容器

  3.--no-cache 构建镜像时不使用缓存

  4.--force-rm  总是移除临时容器(与rm相比失败也移除)

  docker build --tag test .(注意空格后有一个点)

  上面给出的命令涉及docker构建的一个知识点。docker构建是一层一层的,一条指令就是一层,构建完成了之后会运行一个临时容器,不过成功的时候默认是删除的,失败的时候还存在。上面的rm命令就是管理这个的用处。失败存在的容器可以用于调试,docker每构建一层都会缓存起来,下次构建的时候就会使用缓存,这样可以加快构建速度。修改构建文件之后,修改项之前的层都可以使用缓存构建,修改处及之后的都会重新构建,顺便一提如果只是调换两个指令的顺序也不会使用缓存,牢记构建是一层层的,上下两层调换也是完全不一样的,只有从第一层开始完全一致的层才会使用缓存。

2.3 commit

  通过修改一个容器来构建镜像

  

  1.--author  注明镜像的构建作者

  2.--change  使用Dockerfile指令来创建镜像

  3.--message 提交的信息

  4.--pause   提交时暂停容器(默认true)

  这四个选项很简单明了,但是change用的比较少,一般采取这种方式提交的都不需要再使用Dockerfile指令了。这是第二种生成docker镜像的方式。比如你运行一个centos容器,进入容器安装了vim程序,退出容器执行commit就会生成一个新的带有vim程序的镜像。一般不会采取这种方式构建镜像,除非是无法使用Dockerfile完成构建。这就是为什么change参数使用的比较少的原因,因为这种做法都能进入容器完成操作,也就没必要再使用Dockerfile的命令了。

2.4 exec

  在一个运行中的容器中执行一个命令

  

  1.--detach     分离模式:在后台运行一个命令

  2.--detach-keys   和上面的attach命令的作用相同,覆写离开容器的键

  3.--env       设置环境变量

  4.--interactive   保持输入流的打开,即时没有连接

  5.--privileged    给命令赋予权限,测试时容器创建的时候没有带这个参数这里设置了好像也不起作用,run命令的时候有才会生效

  6.--tty        分配一个伪终端,通常和-i连用,进入容器

  7.--user      登入用户

  docker exec -it 容器名 /bin/bash

  这个命令使用的比较频繁,其完好的取代了attach命令,可以在容器终端不能输入的时候,比如tomcat前台运行(很多时候是这样,因为如果没有前台程序,容器就会停止运行)。这个时候即时连上容器,也不能对其做什么,退出如果操作不当,还很容易使容器停止运行。exec命令解决了这个问题,上面的那句命令就可以进入容器的终端,输入指令。

2.5 export、import、save、load

  这四个命令都和docker的迁移有关,如果我们要迁移一个镜像,可以将其上传到docker中心仓库中,在迁移的电脑上再下下来就可以了。但是还有更简单的方法,就是上面的四个指令。export-import是针对容器而言,save-load是针对镜像而言。这两者是有所区别的。

  基本格式是:docker 具体命令 容器/镜像名称或ID。

2.6 history

  展示一个镜像的历史

  

  1.--human    阅读友好的展示方式,默认为true

  2.--no-trunc    不要缩略输出,一般输出命令那段会有折叠,想看到完整的指令,可以使用这个选项

  3.--quiet     只显示ID

  docker history 镜像名/ID

  这个命令可以看见一个镜像一层层是如何构建的。对镜像的层级构建可以更好的理解

2.7 images、ps

   展示镜像列表

  

  1.--all    展示所有的镜像(默认隐藏中间镜像)

  2.--digests  显示数字编号

  3.--filter    根据提供的条件过滤输出

  4.--format  使用一个GO模板合适的打印镜像

  5.--no-trunc 不缩略输出内容

  6.--quiet   只显示数字ID

  docker images

  这个命令也是一个常用命令,可以使用其查阅现在仓库中所拥有的镜像。

  

  images是查看镜像的,与之对应的就是ps,用于查看容器的。

2.8 inspect

  返回一个docker对象的低级别信息

  

  这个命令主要用于查看docker对象的一些基本资料,尝试一下就知道了。

2.9 login、logout、pull、push、search

  这几个命令都和docker的中央镜像仓库有关,login登入,logout登出。pull拉取镜像不需要登录,push提交需要。search可以用于查看仓库中的镜像列表。

2.10 rm、rmi、run、start、stop

  这几个命令和docker镜像容器的生命周期有关,rm删除容器,rmi删除镜像,run以镜像为模板新建一个容器运行,没有镜像会先拉去镜像,start启动容器,stop停止容器。

3.后记

  还有一些命令没有进行介绍,实际上也没必要,英文还可以就可以直接使用help命令来查看命令的解释就可以了。docker命令多用用就会熟练了,主要还是docker的一些基础原理比较重要。下一篇会介绍一下如何编写Dockerfile。

posted @ 2017-05-24 18:41  dark_saber  阅读(1598)  评论(0编辑  收藏  举报