理解了镜像和容器,你就掌握了Docker的80%( 四 )


文章插图
 

  • 一次性删除所有的容器 , 首先运行5个容器 , 然后查看所有的容器(已退出)

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 首先通过docker ps -aq 列举出所有的容器ID
docker ps -aq
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 然后直接rm命令删除列举出所有的容器ID来删除所有容器 , 需要使用$将以上命令当成一个结果进行删除
docker rm $(docker ps -aq)
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 如果所有的容器中存在正在运行的容器以及已退出的容器 , 我只删除已退出的容器 , 这种场景如何实现

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 实现以上的场景 , 首先需要获取到所有容器中已退出的容器ID , 通过-f 筛选出容器状态status=exited已退出的容器 , 加上-q参数则表示列举出容器ID , 最后$包住结果 , 执行docker rm删除即可 , 成功实现只删除已退出的容器

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
四、构建自己的Docker Image1.docker container commit(docker commit)
1.1 交互式运行容器
  • 交互式运行centos容器 , 在容器中并没有安装vim命令 , 进行安装vim工具

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • exit退出容器 , 查看所有容器 , 显示交互式运行的容器已退出

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
1.2 将容器commit成一个image
说明:上一步在容器中安装了vim并退出了容器 , 那么在已退出的容器中可以看到该容器 , 现在则需要将这个容器commit成一个镜像 , 这个镜像是基于centos8基础镜像的 , 但是跟centos8基础基础镜像不一样的是它安装了vim
  • 通过docker container commit命令实现将容器提交成image , 命令可以简写成docker commit

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 执行如下命令 , 生成image镜像 , 
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]docker commit stupefied_fermat cdtaogang/centos-vim:centos8 
理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 查看生成的image

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 对比基础image和自己构建的image分层情况 , 很明显比基础centos8镜像多了一层 , 那就是安装vim命令

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
以上创建image的方式不提倡使用 , 因为如果发布该image , 用户拿到该image是不知道该image是如何构建的 , 并且这种方式构建image很有可能把不安全的东西放到image里面发布出去 , 即该image肯定是不安全的
2.docker image build(docker build)
2.1 创建dockerfile
  • 首先将上一步中commit容器生成的image删除

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • 在上一级目录下创建一个目录 , 进入目录创建并编辑dockerfile文件

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
  • dockerfile内容如下 , 指定基础镜像为centos:centos8版本 , 在基础镜像中运行安装vim命令

理解了镜像和容器,你就掌握了Docker的80%

文章插图
 
2.2 通过dockerfile构建出image