我正在做一个dockerfile。 我刚刚意识到我一直在使用FROM索引图像。
所以我想知道:
我如何使用我的一个本地(自定义)图像作为我的基础(FROM)图像而不推到索引?
我正在做一个dockerfile。 我刚刚意识到我一直在使用FROM索引图像。
所以我想知道:
我如何使用我的一个本地(自定义)图像作为我的基础(FROM)图像而不推到索引?
当前回答
已验证:在Docker 1.7.0中运行良好。
在运行docker build命令时,不要指定——pull=true
在dockerfile中使用From引用本地构建的映像:
如果要使用本地映像作为基映像,则不需要传入 选项——拉= true ——pull=true总是尝试拉一个更新的 映像的版本。
其他回答
你不用做任何特别的事情就可以使用它。如果你有一个名为blah的本地映像,你可以使用FROM blah。如果你在Dockerfile中使用了FROM blah,但是没有名为blah的本地映像,那么Docker将尝试从注册表中提取它。
换句话说,如果Dockerfile FROM ubuntu,但是你有一个不同于官方的本地映像,你的映像将覆盖它。
记住,不仅要放标签,还要放标签所在的存储库,如下所示:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elixir 1.7-centos7_3 e15e6bf57262 20 hours ago 925MB
你应该这样引用它:
elixir:1.7-centos7_3
已验证:在Docker 1.7.0中运行良好。
在运行docker build命令时,不要指定——pull=true
在dockerfile中使用From引用本地构建的映像:
如果要使用本地映像作为基映像,则不需要传入 选项——拉= true ——pull=true总是尝试拉一个更新的 映像的版本。
对于将来遇到这个问题的任何人来说,你在本地有映像,但docker build仍然试图从docker hub中提取映像,问题可能是架构类型不同。
可以使用以下命令检查映像的体系结构
docker inspect --format='{{.Os}}/{{.Architecture}}' IMAGE_NAME
现在在Dockerfile中,将从IMAGE_NAME更改为FROM——platform=linux/amd64 IMAGE_NAME, docker现在将使用本地映像。
我必须禁用带有M1的mac上的BUILDKIT才能使用本地映像。 可以通过将DOCKER_BUILDKIT环境变量设置为0来实现这一点。
DOCKER_BUILDKIT=0 docker build -t YOUR_TAG——pull=false。