到目前为止,我们学习docker里面的image和container的基本知识,也涉及到了一些docker命令。这篇,我们就来完整地学习docker命令,通过本篇学习,你就会知道如何去查询命令和大概知道哪些命令的基本作用是干嘛的,还有有些命令是可以简写的。
docker所有命令Help查询
我们在linux中,先通过service docker status检查下docker服务是否启动。启动之后,通过输入命令docker –help 回车之后,打印全部命令的帮助文档。在docker中命令主要划分为两大块,管理命令和命令。
管理相关命令
命令
docker单个命令Help查询
例如 docker images –help
或者docker container –help, 容器就很多命令。这个也很正常,我们知道镜像是只读的,容器是可以读写的,我们学习docker很大一部分精力是学习如何操作和管理容器。
管理类命令简单了解
管理命令和普通命令区别就是,在普通命令的前面添加一个被管理的对象。例如这个对象是image,或者是container。我们这样通过一个具体的例子来理解这个管理命令的含义。例如,我们知道ls这个普通命令是用来显示清单的。这里docker image ls -a是显示全部镜像清单,而docker container ls –a是显示全部容器清单。
镜像打印全部清单
容器打印全部清单
上面,我们在docker image –help中其实可以看到第一个参数就是-a,a表示all,全部的意思。而且,这里我们可以省略-a,用docker images效果也是一样的。上面我们练习了两个对象的管理命令ls。这样也很正常,很多对象有很多类似或者一样的命令是实现一些基本操作,例如删除,这个时候就要通过对象来进行区分。不然输入docker ls 到底是显示镜像还是容器的清单呢,就乱套了。
- 命令builder, 这个是管理builds,这个我们没有学习到,只是前面学习了docker build通过Dokcerfile来生成镜像。
- 命令conifg,管理docker config,暂时不去学习。
- 命令container,这个我们学习过,管理容器,可以输入docker container –help了解更多
- 命令engine, 管理docker engine, 作用是检查engine的更新,暂时不学习
- 命令image, 这个我们学习过,管理镜像的,重点优先掌握的命令。
- 命令network,管理网络的,暂时不学习
- 命令 node,在多集群docker环境下需要管理node,暂时不学习
- 命令plugin,管理docker插件用的,目前我们没有学习任何插件。
- 命令volume,管理存储的,后面会学习。
还有几个命令,我们都没有学习,算是比较高级的内容,目前,了解这些就可以了。
常见命令练习
命令build
这个例子就不举例,作用就是利用Dockerfile来制作镜像的,可以回到前面两篇文章去学习hello-docker镜像的制作过程。
命令rm
我们知道,每次启动容器,都会产生一个容器的进程,特别是面对很多退出状态的容器,我们经常要删除这些容器。这里通过命令rm来删除容器。
先查看有哪些容器
下面利用rm删除全部容器
上面我通过rm命令删除了全部容器,删除容器需要用到容器ID,可以一次命令删除多个,就像我这样写,也可以一个一个删除。在删除单个容器的时候,你的容器ID,只要输入一些特有的开头,也是可以顺利删除容器。例如上面只有一个584开头的容器ID,通过输入docker rm 584回车就能删除这个584开头的容器。
命令commit
这个命令是把一个容器制作成一个镜像,我下面用centos这个镜像启动一个容器,然后利用yum安装一个vim。然后把安装vim之后的容器利用commit制作成一个新的镜像。
执行安装vim软件过程,安装完之后,我们输入docker diff 容器ID之后看看变化
你需要另外开一个ssh 对话,记住前面一个对话容器的ID,然后在第二个对中输入docker diff 容器id,就可以看到这个容器中文件和路径的变化的记录。
下面看看commit命令
然后查询下当前image的变化,看看有没有产生新的镜像
红圈这个镜像就是通过docker commit 容器ID产生的,我们可以通过IMAGE ID这列的值和我们执行完docker commit命令之后产生的哈希值是符合的。到这里,我们知道有两种方式能制作出镜像。第一种是我们前面学习的通过dockerfile写脚本,然后执行docker build命令制作镜像,第二个办法就是通过容器,然后输入commit命令来制作镜像。应该说,两个都可以,但是通过Dockerfile的方式更好,容器的commit方法不推荐。上面nune到不是问题,我们在输入commit的命有几个参数是可以填。
这篇就到这里,下一篇继续来学习没有完成的命令。