美文网首页
Docker从入门到放弃

Docker从入门到放弃

作者: _Iridescent | 来源:发表于2018-06-11 15:48 被阅读0次

Docker 构建镜像:

如: 错误书写方式
之前说过,Dockerfile 中每一个指令都会建立一层, RUN 也不例外。每一个 RUN 的行为, 就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束 后, commit 这一层的修改,构成新的镜像。

而上面的这种写法,创建了 7 层镜像。这是完全没有意义的,而且很多运行时不需要的东 西,都被装进了镜像里,比如编译环境、更新的软件包等等。结果就是产生非常臃肿、非常 多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。 这是很多初学 Docker 的人常 犯的一个错误。
Union FS 是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层。
上面的 Dockerfile 正确的写法应该是这样:


正确书写方式

首先,之前所有的命令只有一个目的,就是编译、安装 redis 可执行文件。因此没有必要建立 很多层,这只是一层的事情。因此,这里没有使用很多个 RUN 对一一对应不同的命令,而是 仅仅使用一个 RUN 指令,并使用 && 将各个所需命令串联起来。将之前的 7 层,简化为了 1 层。在撰写 Dockerfile 的时候,要经常提醒自己,这并不是在写 Shell 脚本,而是在定义每 一层该如何构建。
并且,这里为了格式化还进行了换行。Dockerfile 支持 Shell 类的行尾添加 \ 的命令换行方 式,以及行首 # 进行注释的格式。良好的格式,比如换行、缩进、注释等,会让维护、排障 更为容易,这是一个比较好的习惯。
此外,还可以看到这一组命令的最后添加了清理工作的命令,删除了为了编译构建所需要的 软件,清理了所有下载、展开的文件,并且还清理了 apt 缓存文件。这是很重要的一步,我 们之前说过,镜像是多层存储,每一层的东西并不会在下一层被删除,会一直跟随着镜像。 因此镜像构建时,一定要确保每一层只添加真正需要添加的东西,任何无关的东西都应该清 理掉。
很多人初学 Docker 制作出了很臃肿的镜像的原因之一,就是忘记了每一层构建的最后一定要 清理掉无关文件。

相关文章

  • Docker从入门到放弃

    Docker 构建镜像: 而上面的这种写法,创建了 7 层镜像。这是完全没有意义的,而且很多运行时不需要...

  • Docker从入门到放弃

    一,docker的用途: 提供统一的环境:在本地测试其他人软件,或者把软件和环境一起打包,给其他人进行测试 提供快...

  • Docker从入门到放弃

    Docker概念 镜像(Image):只读模板。容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身...

  • 【1】docker 简介和安装

    Docker 从入门到放弃 按照官方文档来操作 安装环境 Ubuntu Trusty 14.04 (LTS) 1....

  • Docker 基本用法

    Docker 参考 极客学院Wiki:Docker入门基础教程 Gitbook:Docker —— 从入门到实践 ...

  • docker 从入门到放弃--安装(一)

    yum-config-manager \ --add-repo \ yum-config-manage...

  • Docker安装与国内加速

    Docker 简介 Docker官网Docker GithubDocker —— 从入门到实践Docker是一个开...

  • Docker

    Docker —— 从入门到实践 https://yeasy.gitbooks.io/docker_practic...

  • Ubuntu下安装Docker

    《Docker Practice(Docker从入门到实践)》学习笔记本文转自:Ubuntu 安装 Docker ...

  • 创造的乐趣

    从入门到放弃 ██████████████████████████████████████████████████...

网友评论

      本文标题:Docker从入门到放弃

      本文链接:https://www.haomeiwen.com/subject/ubkzkftx.html