如何告诉 Docker 为“子镜像”提取最新镜像?

时间:2021-04-29 10:33:12

标签: docker docker-compose

来自我的 PHP Dockerfile 的示例:

# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

有了这个,我希望我的容器中有最新的作曲家版本。但是我有一些旧版本。当我执行 docker images 时,我发现我的 composer:latest 图像已过时:

composer                              latest                 8f2928e1f548   8 months ago     176MB

所以我要做的是:

docker-compose pull --include-deps
docker-compose up -d --build --remove-orphans

但是,它只提取基本映像,而不是我通过 --from 依赖的映像。

有我监督的选项吗?或者我应该只需要一些特定的版本,比如 :2.0.13?我看过一些关于 :latest 标签与它建议的不同的博客文章。

2 个答案:

答案 0 :(得分:0)

:latest 标签的问题在于,它并不真正意味着您正在提取该映像的最后一次更新,只是他们标记为 :latest 的那个。

很多时候它的一些版本已经过时了,但它可能是最后一个稳定的镜像,所以如果你对镜像的版本没有任何偏好,使用最新的并不是一个坏主意。

答案 1 :(得分:0)

首先,您应该了解 --include-deps 仅适用于您在 depends_on 指令中设置的图像。不适用于多级。

对于您的情况,您可能应该在没有缓存的情况下构建图像。

docker build --pull --no-cache --tag myimage:version . 在推送到存储库之前 或者如果您在 docker-compose 文件中使用 build

docker-compose build --no-cache --pull