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 能够帮助我们更加深入地理解构建过程和镜像的分层结构。

猜你喜欢

转载自www.cnblogs.com/lizhi199322/p/13181348.html