请注意,EXPOSE指令仅仅是声明容器将监听的端口 , 并不会自动进行端口映射 。要实际进行端口映射,需要在运行容器时使用-p或-P选项 。
CMD ENTRYPOINT语法CMD和ENTRYPOINT支持两种语法:
CMD /bin/echo CMD ["/bin/echo"]
在第一种方式下,Docker会在命令前加上 /bin/sh -c,可能会导致一些意想不到的问题 。在第二种方式下,CMD ENTRYPOINT是一个数组,执行的命令完全和期待的一样 。
容器是短暂的容器模型是进程而不是机器,不需要开机初始化 。在需要时运行,不需要时停止,能够删除后重建,并且配置和启动的最小化 。
.dockerignore 文件在docker build的时候,对于一些不需要提交构建的文件用.dockerignore来进行忽略 。忽略部分无用的文件和目录可以提高构建的速度 。
不要在构建中升级版本不在容器中更新,更新交给基础镜像来处理 。
应用解耦每个容器只运行一个进程,每个容器应用只关心一个方面的事情 。将多个应用解耦到不同容器中,容器起到了隔离应用隔离数据的作用 , 可以更轻松地保证容器的横向扩展和复用 。
例如一个Web应用程序可能包含三个独立的容器:Web应用、数据库、缓存 , 每个容器都是独立的镜像 , 分开运行 。但这并不是说一个容器就只能跑一个进程,因为有的程序可能会自行产生其他进程,比如Celery就可以有很多个工作进程 。
虽然每个容器跑一个进程是一条很好的法则,但这并不是一条硬性的规定 。主要是希望一个容器只关注一件事情 , 尽量保持干净和模块化 。如果容器互相依赖,你可以使用 Docker 容器网络 来把这些容器连接起来 。
最小化镜像层数在很早之前的版本中尽量减少镜像层数是非常重要的,不过现在的版本已经有了一定的改善了:
- 只有RUN、COPY和ADD指令会创建层,其他指令会创建临时的中间镜像,但是不会直接增加构建的镜像大小了 。
- 多阶段构建的支持,允许我们把需要的数据直接复制到最终的镜像中,这就允许在中间阶段包含一些工具或者调试信息了 , 而且不会增加最终的镜像大小 。
避免安装不必要的包为了降低复杂性、减少依赖、减小文件大小和构建时间,应该避免安装额外的或者不必要的软件包 。例如,不要在数据库镜像中包含一个文本编辑器 。
使用特定标签Dockerfile中FROM应始终包含依赖的基础镜像的完整仓库名和标签 , 如使用FROM debian:jessie而不是FROM debian 。
多行参数排序只要有可能,就将多行参数按字母顺序排序 。这可以避免重复包含同一个包,更新包列表时也更容易,也更容易阅读和审查 。建议在反斜杠符号 之前添加一个空格 , 可以增加可读性 。
RUN apt-get update && apt-get install -ybzrcvsgitmercurialsubversion
Dockerfile指令最佳实践关于这些指令的使用建议可以帮助我们创建高效且可维护的Dockerfile 。以下内容为Dockerfile指令部分的最佳实践 。FROM尽可能使用当前的官方镜像作为基础镜像 。推荐使用Debian镜像,大小保持在100MB上下,且仍是完整的发行版 。
另外,根据情况也可考虑使用Alpine映像,因为它受到严格控制且较?。ǖ鼻靶∮?MB),同时仍是完整的linux发行版 。
LABEL标签可以给镜像添加标签来帮助组织镜像、记录许可信息、辅助自动化构建等 。每个标签一行 , 由LABEL开头加上一个或多个标签对 。
下面的示例展示了各种不同的可能格式 。#开头的行是注释内容 。
# Set one or more individual labelsLABEL com.example.version="0.0.1-beta"LABEL vendor="ACME Incorporated"LABEL com.example.release-date="2015-02-12"LABEL com.example.version.is-production=""
一个镜像可以包含多个标签,当然以上内容也可以写成下面这样 , 但是不是必须的:# Set multiple labels at once, using line-continuation characters to break long linesLABEL vendor=ACME Incorporatedcom.example.is-production=""com.example.version="0.0.1-beta"com.example.release-date="2015-02-12"
PS:如果字符串包含空格 , 那么它必须被引用或者空格必须被转义 。如果字符串包含内部引号字符("),则也可以将其转义 。
推荐阅读
- 曙光王妃小说 曙光王妃
- 新鲜竹笋的做法,鲜毛竹笋的处理及做法?
- 远志的功效与作用及食用方法
- 车前子的功效与作用及食用方法
- 国标螺丝型号及尺寸规格表 国标螺丝
- Spring Boot中实现订单30分钟自动取消的策略思路及源代码
- 苹果iPhone电池健康异常:原因揭秘及解决方案
- 花胶的功效与作用及食用方法,花胶的正确炖法和吃法秋季?
- 用友T3如何备份账套,哪位知道用友T3普及版如何进行账套备份
- 打耳洞发炎要及时就医,打耳洞发炎要去医院吗