内容简介:给镜像打上标签,易读的镜像标签可以帮助了解镜像的功能。如 docker build -t=”ruby:2.0-onbuild”选择基础镜像时,尽量选择当前官方镜像中的镜像。不同镜像的大小不同,目前 Linux 镜像大小有如下关系:busybox < debian < centos < Ubuntu
给镜像打上标签,易读的镜像标签可以帮助了解镜像的功能。如 docker build -t=”ruby:2.0-onbuild”
谨慎选择基础镜像
选择基础镜像时,尽量选择当前官方镜像中的镜像。不同镜像的大小不同,目前 Linux 镜像大小有如下关系:
busybox < debian < centos < Ubuntu
同时在构建自己的 Docker 镜像时,只安装必须使用的包。此外,相比 Ubuntu 镜像,更推荐使用debian镜像,因为它非常轻量级(目前大小是在 100M以下),并且仍然是一个完整的发布版本。
FROM指令应该包含参数tag 如使用 FROM debian:jessie 而不是FROM debian。
充分利用换成
Docker daemon 会顺序执行 Dockerfile 中的指令,而且一旦缓存失效,后续命令将不能使用缓存。为了有效的利用缓存,需要保证指令的连续性,尽量将所有 Dockerfile 文件中相同不分都放在前面,而将不同的部分放在后面。
正确使用ADD 与 COPY 指令
尽管 ADD 和COPY 用法和作用很相近,但是 COPY 仍是首选。COPY 相对于 ADD 而言,功能更简单。
RUN 指令
为了使用 Dockerfile 易读、易理解和可维护,在使用较长的 RUN 指令可以使用反斜杠 \
分割多行。大部分使用 RUN 指令的场景是运行 apt-get
命令,在该场景下请注意一下几点:
-
不要在一行中单独使用 RUN apt-get update,当软件源更新以后,这样会引起缓存问题,导致 RUN apt-get install 指令失败。所以 RUN apt-get update 和 apt-get install 应该写在同一行,如: apt-get update && apt-get install xxx
-
避免使用 RUN apt-get upgrade 和 RUN apt-get dist-upgrade。因为无特权容器中会导致一些包更新失败。
不要害怕镜像的层数过多,我们可以在任一一层创建一个容器。因此,不要将所有的容器写在一个 RUN 中。
CMD 和 ENTRYPOINT
CMD 和 ENTRYPOINT 指令指定了容器运行的默认命令。推荐结合使用,使用 exec 格式的 ENTRYPOINT 指令设置固定的默认命令和参数,然后使用 CMD 指令设置可变的参数。
不要在docker中做端口映射
例如
EXPOSE 80:8080
而是暴露端口,另外做映射
EXPOSE 80
使用 Dockerfile 共享 Docker镜像
若要共享镜像,只需要共享 Dockerfile 文件即可。共享 Dockerfile文件具有以下优点:
- 可以加入版本控制,这样便于追踪文件的变化和回滚错误
- 通过 Dockerfile 文件,可以清楚镜像构建的过程
- 使用 Dockerfile 文件构建的镜像具体确定性
以上由awen 整理,来源《docker容器与容器云》
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Lucene实践心得笔记
- 一次全栈实践心得
- rabbitmq 实践与学习心得分享(1)
- 敏捷开发 Agile 中 Scrum 与 Kanban 的实践心得
- 五个案例,三大心得,Meratix创始人带你进阶深度学习的实践应用之路
- 朱晔的互联网架构实践心得 S2E1:业务代码究竟难不难写?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数学与泛型编程
[美]亚历山大 A. 斯捷潘诺夫(Alexander A. Stepanov)、[美]丹尼尔 E. 罗斯(Daniel E. Rose) / 爱飞翔 / 机械工业出版社 / 2017-8 / 79
这是一本内容丰富而又通俗易懂的书籍,由优秀的软件设计师 Alexander A. Stepanov 与其同事 Daniel E. Rose 所撰写。作者在书中解释泛型编程的原则及其所依据的抽象数学概念,以帮助你写出简洁而强大的代码。 只要你对编程相当熟悉,并且擅长逻辑思考,那么就可以顺利阅读本书。Stepanov 与 Rose 会清晰地讲解相关的抽象代数及数论知识。他们首先解释数学家想要解决......一起来看看 《数学与泛型编程》 这本书的介绍吧!