从Dockerfile创buildDocker基础映像?

我有一个运行我的应用程序的工作docker的形象,但我有问题,每当我添加新的依赖关系,我必须重新安装所有的依赖项。 这很糟糕。 我知道我可以通过将依赖关系放在单独的行上来解决这个问题,但这太笨拙了,如果我想从不同的位置构build,那么就不是可移植的。 我宁愿做的是制作一个基本的图像,我知道我现在需要(尤其是需要很长时间才能安装的)需求,然后只是build立所有新的图像,所以我可以有快速的构build时间从任何机器。 所以,所有这一切说,从Dockerfile创build基础镜像的好方法是什么,还是有更好的方法来完成我所需要的可移植性和快速构build时间?

任何泊坞窗图像都是基础图像。 您可以使用from tag将任何已经构build或从存储库中提取的图像用作基础图像。

正在进行的工作( Docker issue332 )能够扁平基础图像以加快下载速度,但尚未完成。 只要你没有在基本映像中定义任何端口和卷,你可以使用所罗门在这个问题的评论中提出的黑客攻击

目前,“挤压”图像的唯一方法是从中创build容器,将该容器导出为原始压缩包,然后将其重新导入为图像。 不幸的是,这将导致所有的图像元数据丢失,包括其历史,但也端口,环境,默认命令,维护者信息等。 – 所罗门·海克斯

要达到这个目的,你可以运行:

 # Run a NOOP command that creates a container container_id=$(docker run -d <BASE-CONTAINER> ls) # Run export the image as a tarball docker export $container_id > image.tar # Import the image into a new container cat image.tar | docker import - yourname/BASE:TAG # Now you can use ```from yourname/BASE:TAG``` in your docker files. # Or you can push to dockerhub with the following # commands so you can use on other machines docker login docker push yourname/BASE:TAG