从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
- 在一个守护进程下的不同目录下的Docker容器
- 在Centos上增加Docker容器大小
- 迁移已build立的与docker集装箱的TCP连接
- Docker-java API在windows 10中的Eclipse中连接virtualbox ubuntu docker
- 连接Oracle数据库容器和Java应用程序容器(Docker)
- 无法将terminal连接到docker中正在运行的容器
- java Runtime.getRuntime()。availableProcessors()和nproc返回不同的值
- eval $(docker-machine env myvm1)不会切换到shell以与myvm1进行通信
- 一个或多个未定义的variables:“字典对象”没有属性“SSH_AUTH_SOCK”