好的,我的问题是关于
我做的对吗?如果没有,最佳实践是什么?
最近我在我的项目中使用了Docker。目前,我为我想要发布的项目的每个版本构建一个新的docker映像。例如,我每个月都有一个新版本,所以我每个月都要制作一个新的docker映像。
如您所知,每个docker映像都有自己的基本映像。我以这种方式使用node
图像作为基础图像;
FROM node:alpine
上面的行总是我的Dockerfile的第一行,这导致生成的图像大小超过100MB。我想知道,我做得对吗?它是否应该一直存在于每个图像中?有没有更好的方法来不嵌入基础图像在每个版本/图像?
你用docker构建的每个映像都是一个独立的映像,所以没有办法避免这个基本映像行。
如果大小是一个问题,你可以总是使用最小的linux镜像,如alpine或busybox,然后安装你的依赖,如node使用包管理器。你也可以尝试其他的大小优化技术,比如分阶段构建。
Docker映像使用分层文件系统。如果一个层在两个构建之间没有改变,那么您只需要拉出新的层来更新到下一个版本。如果基础映像在构建之间发生变化,那么这些层将会不同,但是需要从该映像中获取补丁。
关于改进Dockerfiles的一个很好的资源是Docker的最佳实践。