【发布时间】:2021-06-13 05:47:04
【问题描述】:
我找不到很多 .dockerignore 文件应该是什么样子的示例。
使用 puppet 在 docker 容器上安装一些包会导致映像从 600MB 爆炸到 3GB。我正在尝试使用.dockerignore 文件将大小保持在最小值
$ cat Dockerfile
FROM centos:centos6
#Work around selinux problem on cent images
RUN yum install -y --enablerepo=centosplus libselinux-devel
RUN yum install -y wget git tar openssh-server; yum -y clean all
Add Puppetfile /
RUN librarian-puppet install
RUN puppet apply --modulepath=/modules -e "class { 'buildslave': jenkins_slave => true,}"
RUN librarian-puppet clean
如果我运行docker images --tree,我可以看到图像立即增长了几 GB
$ docker images --tree
├─e289570b5555 Virtual Size: 387.7 MB
│ └─a7646acf90d0 Virtual Size: 442.5 MB
│ └─d7bc6e1fbe43 Virtual Size: 442.5 MB
│ └─772e6b204e3b Virtual Size: 627.5 MB
│ └─599a7b5226f4 Virtual Size: 627.5 MB
│ └─9fbffccda8bd Virtual Size: 2.943 GB
│ └─ee46af013f6b Virtual Size: 2.943 GB
│ └─3e4fe065fd07 Virtual Size: 2.943 GB
│ └─de9ec3eba39e Virtual Size: 2.943 GB
│ └─31cba2716a12 Virtual Size: 2.943 GB
│ └─52cbc742d3c4 Virtual Size: 2.943 GB
│ └─9a857380258c Virtual Size: 2.943 GB
│ └─c6d87a343807 Virtual Size: 2.964 GB
│ └─f664124e0080 Virtual Size: 2.964 GB
│ └─e6cc212038b9 Virtual Size: 2.964 GB Tags: foo/jenkins-centos6-buildslave:latest
我相信图像变得如此之大的原因是因为 librarian-puppet 将 puppet 模块克隆到 /modules 从而破坏了构建缓存
我尝试了以下.dockerignore 文件,但没有成功。
$ cat .dockerignore
/modules
/modules/
/modules/*
这是 .dockerignore 文件的正确语法吗?
有没有其他方法可以防止这些容器变得如此之大?
其他信息:
http://kartar.net/2013/12/building-puppet-apps-inside-docker/
http://danielmartins.ninja/posts/a-week-of-docker.html
【问题讨论】: