• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker镜像构建的两种方法解析

Docker镜像构建的两种方法解析

作者:dfengwei 字体:[增加 减小] 来源:互联网

本文主要包含Docker,镜像等服务器相关知识,dfengwei 希望可以进行参考

关于Docker里面的几个主要概念

这里用个不太恰当的比方来说明。

大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统。你可以拿别人的ghost文件安装系统(使用镜像运行容器),也可以把自己现有的系统制作成ghost文件(从容器构建镜像)。Dockerfile则像是一个生成ghost文件的脚本(镜像构建脚本),这个脚本会指定去哪里下载哪个版本的window系统,再去哪里下载哪些软件并安装,再修改哪些配置文件,等等。本文主要讲的是,如何从容器构建镜像(把现有系统制作成ghost文件),和如何使用Dockerfile构建镜像(使用脚本生成ghost文件)。

两种方式构建镜像的主要步骤:

1、从容器构建镜像(以下简称容器镜像)
创建一个容器,比如使用tomcat:latest镜像创建一个tomcat-test容器
修改tomcat-test容器的文件系统,比如修改tomcat的server.xml文件中的默认端口
使用commit命令提交镜像

2、使用Dockerfile构建镜像(以下简称Dockerfile镜像)
编写Dockerfile文件
使用build命令构建镜像

两种构建方式的区别:

1、容器镜像的构建者可以任意修改容器的文件系统后进行发布,这种修改对于镜像使用者来说是不透明的,镜像构建者一般也不会将对容器文件系统的每一步修改,记录进文档中,供镜像使用者参考。

2、容器镜像不能(更准确地说是不建议)通过修改,生成新的容器镜像。
从镜像运行容器,实际上是在镜像顶部上加了一层可写层,所有对容器文件系统的修改,都在这一层中进行,不影响已经存在的层。比如在容器中删除一个1G的文件,从用户的角度看,容器中该文件已经没有了,但从文件系统的角度看,文件其实还在,只不过在顶层中标记该文件已被删除,当然这个标记为已删除的文件还会占用镜像空间。从容器构建镜像,实际上是把容器的顶层固化到镜像中。
也就是说, 对容器镜像进行修改后,生成新的容器镜像,会多一层,而且体积只会增大,不会减小。长此以往,镜像将变得越来越臃肿。Docker提供的export和import命令可以一定程度上处理该问题,但也并不是没有缺点。

3、容器镜像依赖的父镜像变化时,容器镜像必须进行重新构建。如果没有编写自动化构建脚本,而是手工构建的,那么又要重新修改容器的文件系统,再进行构建,这些重复劳动其实是没有价值的。

4、Dockerfile镜像是完全透明的,所有用于构建镜像的指令都可以通过Dockerfile看到。甚至你还可以递归找到本镜像的任何父镜像的构建指令。也就是说,你可以完全了解一个镜像是如何从零开始,通过一条条指令构建出来的。

5、Dockerfile镜像需要修改时,可以通过修改Dockerfile中的指令,再重新构建生成,没有任何问题。

6、Dockerfile可以在GitHub等源码管理网站上进行托管,DockerHub自动关联源码进行构建。当你的Dockerfile变动,或者依赖的父镜像变动,都会触发镜像的自动构建,非常方便。
不管是官方还是我个人,都推荐使用第二种方式构建镜像。

关于Dockerfile里面指令的详细说明,这里就不一一列出了,大家可以参考官方文档,或关注我之后的文章,当然网上也是一搜一大堆。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • Docker如何多步构建生成dubbo-admin镜像详解
  • 从零开始构建docker基础镜像的方法
  • Docker使用 Maven 插件构建镜像的方法
  • 浅谈使用Maven插件构建Docker镜像的方法
  • 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
  • Docker如何使用Dockerfile构建镜像
  • jenkins构建Docker 镜像实例详解
  • Docker中镜像构建文件Dockerfile与相关命令的详细介绍
  • Docker多阶段镜像构建的实现
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • CentOS7虚拟机安装并配置docker套件
  • Docker安装及基本使用方法详细介绍
  • 详解Docker cpu限制分析
  • 解决VMWARE桥接模式虚拟机无法上网的问题
  • XenServer 详细介绍与 虚拟化系列-Citrix (XenServer 6.1) 安装与配置
  • Mac上将brew安装的MySql改用Docker执行操作过程
  • Dockerfile中multi-stage(多阶段构建)详解
  • 基于docker安装tensorflow的完整步骤
  • Docker学习之搭建ActiveMQ消息服务的方法步骤
  • OpenStack Ceilometer用MongoDB解决占用磁盘空间过大问题

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解云与备份之VMware虚机备份和恢复
    • CentOS7 Nvidia Docker环境搭建
    • Linux下使用docker搭建Openvpn代理的方法
    • CentOS 5.4+OpenVZ+Vtonf实现VPS服务器的方法
    • 如何通过vs2017的Dockerfile来生成镜像
    • Mac系统上用Docker搭建lamp环境
    • VMware Workstation 12安装与激活图文教程
    • 在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法
    • VMware Workstation安装配置方法图文教程
    • 什么是Docker? Docker入门教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有