Docker 将容器推送到私有注册表
Docker pushing containers to private registry
我有一个使用多个 docker 容器的应用程序:
- NGINX 容器
- NodeJS 航行应用程序容器
- Redis 缓存容器
由于我对上述两个容器使用现有图像,因此我还有两个缓存容器:
- 高山
- 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
图像也会被推送到那里。
我有一个使用多个 docker 容器的应用程序:
- NGINX 容器
- NodeJS 航行应用程序容器
- Redis 缓存容器
由于我对上述两个容器使用现有图像,因此我还有两个缓存容器:
- 高山
- 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
图像也会被推送到那里。