Docker 优化与持续集成实践
1. 大镜像的优势与优化
在 Docker 应用中,通常认为小镜像更节省磁盘空间和网络带宽,但实际上大的单体镜像也有其独特优势。
1.1 移除未使用文件优化镜像大小
可以通过以下步骤优化镜像大小:
- 获得运行期间未访问的所有文件列表。
- 移除所有未访问的文件。
接着可以扁平化这个容器来创建新镜像并测试其是否仍能正常工作:
$ ID=$(docker export reduce | docker import -)
$ docker tag $ID smaller
$ docker images | grep smaller
示例中,镜像大小从 96 MB 减少到约 6.5 MB,且功能正常。不过这种方法有风险,对于关键业务应用,可能会误删后续需要的文件。如果担心破坏镜像,可以查看 /tmp/candidates.txt 文件获取未使用的大文件列表,然后删除确定不需要的大文件。
1.2 创建大单体基础镜像
创建组织通用的大型单体基础镜像可以节省磁盘空间和网络带宽。Docker 在容器运行时使用写时复制机制,多个基于同一基础镜像的容器启动时,仅需少量额外磁盘空间。
与多个不同的小镜像相比,一个包含所有所需内容的大单体镜像可能更节省空间。例如,在一个服务器上,如果有多个不同的小镜像,会存在核心应用的重复,浪费空间和带宽;而使用一个大的企业镜像和少量特定项目的小层增量,则能显著降低总空间和带宽使用。
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



