Docker将映像推送到依赖于其他映像的存储库

时间:2018-07-10 11:16:25

标签: push dockerfile

构建docker映像时,我的docker文件中有如下行

FROM realyunlong/cv_image FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04

docker images的输出:

REPOSITORY             TAG                            IMAGE ID            CREATED             SIZE
v1                     latest                         1786f4752d3c        44 minutes ago      3.73GB
<none>                 <none>                         dd1523103796        About an hour ago   9.83GB
nvidia/cuda            8.0-cudnn6-devel-ubuntu16.04   8d377158a37d        12 days ago         1.99GB
hello-world            latest                         e38bc07ac18e        2 months ago        1.85kB
realyunlong/cv_image   latest                         4f1b6063ff55        12 months ago       3.37GB

我的理解是,v1是我项目的docker映像,它依赖于其他预构建的映像,例如realyunlong/cv_imagenvidia/cuda。 (我不知道none:none是什么)

如何将图片推送到我的私人仓库中? 如果将v1推送到存储库,是否会处理所有其他图像依赖项?

2 个答案:

答案 0 :(得分:0)

如果您docker push v1:latest将推送完整的图像及其所有相关代码;但不会在这些基础图像碰巧附带的名称处记录下来。

因此,如果您移动到另一台计算机并运行docker pull v1:latest然后运行docker images,则会看到v1图像,但看不到其FROM图像列出,并且如果您尝试直接docker run那个基础映像或docker build来自同一基础的另一个映像,它将从Docker Hub(或任何地方)中拉出。

答案 1 :(得分:0)

将映像推送到存储库(私有或公共)时,它包含您选择要包含在其内部版本中的任何内容。如果您从Dockerfile开始构建图片,例如nvidia/cuda,其中包括nvidia/cuda所包含的内容以及您对其进行的所有添加。

但是,如果要在新环境中重建映像,则将需要旧环境中的所有内容。

推送到私有存储库与推送到公共存储库实际上没有什么不同,除了必需的身份验证。