以下为Dockerfile编写的一些最佳实践总结。

不要在构建中升级版本

不需要在容器中使用apt-get upgrade来升级软件版本,更新可能会经常失败,而且可能会产生不一致的镜像。

使用小型基础镜像

建议使用debian作为基础镜像,会更轻量,足够小并且没有包含任何不需要的包。

使用特定的标签

在指定基础镜像的时候应当标明完整的仓库名和标签,尽量不要使用latest,因为随着时间的变化,latest版本的镜像也会改变,可能会导致Dockerfile出错。

软件安装指令组合

apt-get update与apt-get install应当组合使用,安装多个软件时应该使用\来进行多行编写,例如:

RUN apt-get update && apt-get install -y \
aufs-tools \
btrfs-tools \
build-essential \
curl \
dpkg-sig \
git \
libcap-dev \
libsqlite3-dev \
lxc=1.0* \
s3cmd=1.1.0*

当软件需要指定特定版本的时候使用“=”直接指定。

公开端口

在Dockerfile中你有能力映射私有和公有端口。但是永远不要通过Dockerfile映射共有端口。我们可以在运行容器的时候使用-p参数设置公有端口。

CMD和ENTRYPOINT组合使用

使用CMD和ENTRYPOINT时,应当使用数组语法,不要使用命令语法。

ADD和COPY命令

COPY仅提供本地文件向容器的拷贝,ADD还另外支持拷贝tar包和URL。但是拷贝本地文件时COPY是首选。



参考资料:
Dockerfile最佳实践

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐