我正在使用dockerfile。
我刚刚意识到我一直在使用带有索引图像的FROM
。
所以我想知道:
FROM
)图片,而不是pushing
图片?答案 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
将始终尝试提取更新 图像的版本。
答案 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-registry和https://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