003Docker学习__commit命令构建docker镜像

Posted lizhi199322

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了003Docker学习__commit命令构建docker镜像相关的知识,希望对你有一定的参考价值。

为什么需要自己构建Docker镜像

  • 使用docker仓库中镜像的好处
    • 对于 Docker 用户来说,最好的情况是不需要自己创建镜像。因为使用docker官方仓库中的镜像好处是省去自己做镜像的工作量。
    • 在docker的官方仓库中,几乎所有常用的数据库、中间件、应用软件等。我们只需要稍作配置就可以直接使用。
  • docker仓库中没有适合我们的镜像
    • 找不到现成的镜像,比如自己开发的应用程序。需要在镜像中加入特定的功能,比如官方镜像几乎都不提供 ssh。

构建镜像的方法

 技术图片
技术图片
  • Docker 提供了两种构建镜像的方法:
    • 基于容器制作,使用docker commit 命令来制作
    • Dockerfile 构建文件,将dockerfile文件编写完成后,使用docker build命令来制作

docker commit

docker commit 命令是创建新镜像最直观的方法,其过程包含三个步骤:
  1. 运行容器。运行一个由base镜像启动的容器
  2. 修改容器。在运行起来的容器中加入需要的元素,例如:在centos中安装一个vim程序
  3. 将容器保存为新的镜像。将可也层中的内容连同base image保存为新的镜像。例如:将安装有vim程序的容器,保存为新的镜像。

使用docker commit命令来创建一个新的镜像 

1.下载一个centos的镜像到本地,我们先看下在docker Hub中有哪些镜像。
可以看到有很多的镜像可以供我们选择,可以根据自己的需要来下载镜像。
技术图片
可以看到有很多的镜像可以供我们选择,可以根据自己的需要来下载镜像。

 
2.我下载的是第一个centos镜像,到本地。
技术图片
 
3.在本地查看上一步下载的centos镜像
技术图片
 
4.使用centos:latest镜像,运行成为一个容器
-it 参数的作用是以交互模式进入容器,并打开终端。2368de7c6b05是容器的内部ID
技术图片
 
5.在容器中安装vim软件
使用vim来编写文件,提示没有vim这个命令
技术图片
安装vim技术图片技术图片
 
6.保存为新镜像
在新窗口中查看当前运行的容器。
技术图片distracted_beaver是 Docker 为我们的容器随机分配的名字。
要让容器处于运行状态,在本台主机上打开另外一个窗口,运行以下命令技术图片
新镜像命名为centos-vim,标签默认为latest
如果我们在制作镜像时没有添加”仓库名:标签“
使用docker tag ID 仓库名:标签
查看新镜像的属性
技术图片
可以看出centos-vim是因为在容器打包成镜像时多了vim软件,所以变大了
 
7.运行新构建的centos-vim镜像,看看其中是否有vim软件
技术图片
可以看出centos-vim镜像中是有vim软件

本节内容总结

  • Docker 并不建议用户通过这种方式构建镜像。原因如下:
  1. 这是一种手工创建镜像的方式,容易出错,效率低且可重复性弱。比如要在 debian base 镜像中也加入 vi,还得重复前面的所有步骤。
  2. 更重要的:使用者并不知道镜像是如何创建出来的,里面是否有恶意程序。也就是说无法对镜像进行审计,存在安全隐患。
  • 既然 docker commit 不是推荐的方法,为什么还要花时间学习呢?
    • 原因是:即便是用 Dockerfile(推荐方法)构建镜像,底层也 docker commit 一层一层构建新镜像的。学习 docker commit 能够帮助我们更加深入地理解构建过程和镜像的分层结构。

以上是关于003Docker学习__commit命令构建docker镜像的主要内容,如果未能解决你的问题,请参考以下文章

docker commit构建镜像(不推荐)

Docker镜像的构成__docker commit

DOCKER学习_011:使用Dockerfile制作docker镜像

docker学习笔记5:利用commit命令创建镜像 和 删除本地镜像

Docker学习__docker命令[docker version 和 docker info]

在 yocto 上构建 docker