如何解决在Docker中创建外部层以避免将其推送到私有注册表
使用Ubuntu作为基本Docker映像时,存在一些许可证冲突,无法重新分发该映像。
一种方法是将其推送到hub.docker.com,那里的基础映像层可用,因此仅推送新映像的层。
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y gcc make
在上述Dockerfile中,由“ FROM ubuntu:18.04”创建的第一层在docker hub中已经可用,因此不会被推送,而“ RUN apt-get update && apt-get install -y gcc”中的另一层make”只会被推送到新的回购中。并且在docker pull命令期间,直接从docker hub上的Ubuntu发行版中调用第一层,因此它不会为重新发行创建任何许可证冲突。
现在,我们正计划从Docker集线器迁移到需要推送应用程序的私有注册表。使用私有注册表,它将推送这两个层次(因为ubuntu基本映像在私有注册表中不可用)。从私有注册表中提取docker映像时,它将拉出与ubuntu中的重新分发许可证相冲突的两个层。
那么有什么方法可以将仅几层推送到私有Docker注册表而无需推送基础映像的那一层?
在从不同注册表中提取图层时,将同时提取docker镜像。除了使用docker pull命令,我们还可以使用curl或任何其他命令来加载图像。
在Docker中有一个称为外部层的概念,但是找不到任何资源来解释如何在Manifest文件中创建外部层。 微软在分发基于Windows的Docker映像时使用了外部层的概念。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。