如何使用dockerfile将本地图像用作基础图像?
我正在处理dockerfile。 我只是意识到我一直在使用FROM
索引图像。
所以我想知道:
- 我怎样才能使用我的本地(自定义)图像作为我的基地(
FROM
)图像之一,而不会pushing
到索引?
你可以使用它而不做任何特别的事情。 如果你有一个叫做blah
的本地图像,你可以做FROM blah
。 如果你在你的Dockerfile中做了FROM blah
,但是没有叫做blah
的本地图片, 那么 Docker会尝试从registry中取出它。
换句话说,如果一个Dockerfile执行FROM ubuntu
,但是你有一个名为ubuntu
的本地映像与官方映像不同,你的映像将覆盖它。
已validation:在Docker 1.7.0中运行良好。
顺便说一句,运行--pull=true
docker build
命令时不要指定--pull=true
:
if you want use the local image as the base image, please without the option --pull=true, --pull=true will always attempt to pull a newer version of the image.
我没有声望添加评论(@defreitas),所以添加它作为答案。 你可以有 – 字符在你的图像。 假设你有一个名为centos-base-image,标签为7.3.1611的本地映像(不是本地registry)。
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
是获取本地图像,您可以提供额外的说明从您的自定义registry中获取图像(例如FROM localhost:5000/my-image:with.tag
)。 请参阅https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry和https://docs.docker.com/registry/#tldr
最后,如果您的图像在提供名称时未被parsing,请尝试在创build图像时向图像添加标签
https://docs.docker.com/engine/reference/commandline/commit/
这种forms描述了类似的问题
https://github.com/moby/moby/issues/8975
通过省略一个特定的标签,docker将寻找一个标记为“latest”的图像,所以要么使用:latest标签创build一个图像,要么改变你的FROM
添加上面的链接作为代码块,因为我没有足够的代表发布更多的2个链接…;)