Docker 将容器推送到私有注册表

Docker pushing containers to private registry

我有一个使用多个 docker 容器的应用程序:

  1. NGINX 容器
  2. NodeJS 航行应用程序容器
  3. Redis 缓存容器

由于我对上述两个容器使用现有图像,因此我还有两个缓存容器:

  1. 高山
  2. redis

我正在尝试将我的容器(1、2 和 3)推送到 AWS Elastic Container Registry (ECR)。我已经能够做到这一点,但我注意到我的缓存容器(4 和 5)也被推送了。

我正在使用 docker-compose 构建容器,然后像这样标记:

docker tag -f nodejs_app:latest <repository URL>:latest

使用 docker login 登录 ECR 后,我使用此命令进行推送:

docker push <repository URL>:latest

Docker 然后将所有 5 个容器推送到注册表中。 如何只推送我关心的容器而不推送缓存的容器?

提前致谢:-)

How do I only push the containers that I care about and not the cached ones too?

你不知道。

Docker 映像(不是 容器;容器是启动 映像 时得到的容器)是从层。例如,您的 nginx 图像包含 alpine 图像中的所有图层,然后是您的 Dockerfile.

结果创建的任何图层

为了将您的新图像存储在私有存储库中,所有底层都需要可用。这意味着除了您通过 Dockerfile 创建的层之外,alpine 图像中的所有层也需要推送到存储库。

因此,如果您在 alpine 图像之上构建图像并将其推送到私有存储库,则 alpine 图像也会被推送到那里。