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

浅析Docker镜像分层的注意事项

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

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

前言

我们平常在对程序进行Docker镜像打包的时候总会有些困惑,到底是将最终的镜像分层打包最后汇总成程序的镜像(也就是一层一层的 From )合适,还是说直接将程序从Source code就打包出最终的镜像更合适呢?其实这里面没有说那个是对或错的,要看程序包自身的情况做选择。

Docker build的注意点

如果接触过Docker,Docker build大家都清楚怎么用了,但是有几个容易忽略的注意点:

     1、Dockerfile开头的 From 和 MAINTAINER 其实都是一层镜像

     2、如果 From 和 MAINTAINER 不同,就算是后面的命令语句相同也不会是相同的镜像。如都是执行 RUN echo "hello world" >> test.txt ,如果 MAINTAINER 不同,则生成的这个语句的镜像层将是不同的。

     3、原理上如果每一层对应的父层不同,那怕执行的命令相同,Docker也会生成一层新的镜像,如下面两个Dockerfile文件

Dockerfile 1:

FROM centos:latest
MAINTAINER duffqiu@gmail.com

RUN echo "test" >> hello.txt
RUN echo "hello" > test.txt

Dockerfile 2:

FROM centos:latest
MAINTAINER duffqiu@gmail.com

RUN echo "hello" > test.txt
RUN echo "test" >> hello.txt

这两个文件的内容只是两个 RUN 语句顺序不一样,但是最后它们生成的image层是不一样的,可以通过 docker history <image name> 来对比

从这里面也看到一个问题,From最好不要用lastest标签,避免不同镜像的顶层是不同,从而无法复用。

实践建议

需要看具体情况,如果有一个包是公用的,且比较大,则最好先将这个包打成Image再给后续的程序打包使用,这样使用时占用的机器磁盘空间最小,启动时如果需要pull的话也最快。

但是如果包本身就是很小,过细的分层也不利于维护和管理,所以最终还是一个艺术问题

总结

以上就是这篇文章的全部内容,希望这篇文章的内容对大家的学习或者工作能有一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:

  • Docker创建镜像两种方法详解
  • 简单谈谈Docker镜像的使用方法
  • Docker 下载镜像慢的问题解决方法
  • 利用Docker制作Nginx+PHP镜像的步骤详解
  • Docker 镜像和容器的区别详解
  • 深入了解docker(docker镜像、容器、仓库的基本概念)
  • Docker镜像制作详解介绍
  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)
  • docker在已有的tomcat镜像上打新的镜像的Dockerfile编写说明介绍
  • Docker在CentOS7下不能下载镜像timeout的解决办法(图解)
  • 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 在持续集成测试中的应用

相关文章

  • Docker使用Dockerfile来创建镜像
  • 图像特征知识结构,图像特征结构
  • Docker的基本命令使用笔记
  • docker私有仓库的搭建和使用详解
  • Mac系统上用Docker搭建lamp环境
  • VMware虚拟机安装Fedora 27 Workstation正式版(图文)
  • 详解在Docker容器中运行Spring Boot应用
  • 深入理解docker的四种网络方式
  • Docker实践—CentOS7上部署Kubernetes详解
  • vmware12中安装 RedHat RHEL7.2系统的详细步骤(图文)

文章分类

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

最近更新的内容

    • virtualbox不能安装64位系统的解决方法
    • 优化提高VMware虚拟机运行速度的技巧(详细图文教程)
    • CentOS7 阿里云的yum源使用详解
    • 总结红帽RHEV3.0 展望RHEV3.1
    • 解决 XAMPP 和 VMWare 端口443冲突问题
    • VirtualBox复制的虚拟机无法获取IP的完美解决办法
    • Docker基本命令使用详解(推荐)
    • 如何解决Linux系统下Docker占满分区的问题
    • docker官方mysql镜像自定义配置详解
    • Docker创建一个mysql容器并保存为本地镜像

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

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