如何使用dockerfile将本地图像用作基本图像?

时间:2013-12-09 21:30:54

标签: docker

我正在使用dockerfile。 我刚刚意识到我一直在使用带有索引图像的FROM

所以我想知道:

  • 如何使用我的本地(自定义)图片作为我的基础(FROM)图片,而不是pushing图片?

4 个答案:

答案 0 :(得分:104)

您可以在不做任何特殊操作的情况下使用它。如果您有一个名为blah的本地图片,则可以执行FROM blah。如果您在Dockerfile中执行FROM blah,但是有一个名为blah的本地图像,那么 Docker会尝试将其从注册表中。

换句话说,如果Dockerfile执行FROM ubuntu,但您有一个名为ubuntu的本地图像与官方图像不同,则您的图像将覆盖它。

答案 1 :(得分:14)

已验证:它在Docker 1.7.0中运行良好。

顺便说一下,在运行--pull=true命令时,请不要指定docker build

  

如果你想使用本地图像作为基本图像,请不要使用    选项--pull=true--pull=true将始终尝试提取更新    图像的版本。

- https://github.com/docker/docker/issues/14943

答案 2 :(得分:3)

您可以拥有 - 图片中的字符。假设您有一个名为centos-base-image的本地图像(不是本地注册表),标记为7.3.1611。

docker version 
      Client:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

      Server:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

docker images
 REPOSITORY            TAG
 centos-base-image     7.3.1611

Dockerfile

FROM centos-base-image:7.3.1611
RUN yum -y install epel-release libaio bc flex

结果

Sending build context to Docker daemon 315.9 MB
Step 1 : FROM centos-base-image:7.3.1611
  ---> c4d84e86782e
Step 2 : RUN yum -y install epel-release libaio bc flex
  ---> Running in 36d8abd0dad9
...

在上面的示例中,FROM正在获取您的本地图片,您可以提供其他说明以从自定义注册表中获取图片(例如FROM localhost:5000/my-image:with.tag)。请参阅https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registryhttps://docs.docker.com/registry/#tldr

最后,如果在提供姓名时图片未得到解决,请尝试adding a tag to the image when you create it

This GitHub thread describes a similar issue of not finding local images by name

  

通过省略特定标记,docker将查找标记为“latest”的图像,因此要么使用:latest标记创建图像,要么更改FROM

答案 3 :(得分:0)

请记住,不仅要放置标签,还要放置该标签所在的存储库,方法是:

docker images
REPOSITORY                                TAG                       IMAGE ID            CREATED             SIZE
elixir                                    1.7-centos7_3             e15e6bf57262        20 hours ago        925MB

您应该以这种方式引用它:

elixir:1.7-centos7_3