gpt4 book ai didi

amazon-web-services - 推送到 ECR 时的 Docker 镜像大小与本地不同

转载 作者:行者123 更新时间:2023-12-04 08:07:18 30 4
gpt4 key购买 nike

我在我的本地机器上有一个 1.46GB 的 docker 镜像,但是当它被推送到 AWS ECR(通过我的本地机器或通过 CicleCI 部署)时,它只有 537.05MB。我对 Docker 和 AWS 还很陌生,所以任何帮助弄清楚为什么会这样的帮助将不胜感激!

我有一种感觉,无论出于何种原因,它都没有完全上传到 ECR,因为我正在尝试将此容器用于批处理作业,但由于某种原因,在本地使用时有效的相同命令在作业定义中使用时不起作用.命令很简单 python app.py ,但我也试过绝对路径 python /usr/local/src/app/app.py ,这两者的结果都是 [Errno 2] No such file or directory .

我的 Makefile 部署中使用的命令如下:

docker build --force-rm=true -t $(EXTRACTOR_IMAGE_NAME) ./extractor
docker tag $(EXTRACTOR_IMAGE_NAME) $(EXTRACTOR_ECR_IMAGE_NAME)
$(shell aws ecr get-login --no-include-email)
docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/$(EXTRACTOR_ECR_REPO)

编辑 1:
我认为这可能与基本图像的大小有关,在本例中为 python:2.7。基本镜像为 914MB,加上我的 ECR 镜像的大小 537.05MB = 1451.05MB,即大约 1.46GB。仍然不确定批处理命令的问题是什么......

编辑 2:
我一直在使用卷将代码安装到我的容器中,这就是为什么这一直在本地工作。在构建时,我忘记将代码复制到容器中,我认为这是这在 Batch 中不起作用的唯一原因!

最佳答案

这可能是由于 docker 客户端在将图像推送到 ECR 之前的行为方式为 documented :

Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes shown in the AWS Management Console.



因此,当您拉取图像时,您会注意到图像层经历了三个阶段:
  • 下载
  • 提取
  • 竣工

  • 关于这个命令: python /usr/local/src/app/app.py当你在里面时正在执行它 /usr/local/src/app/ ?您可能需要首先确保这一点,并且在推送之前使用图像检查了容器内的命令,因为错误似乎与代码相关而不是 docker 问题

    关于amazon-web-services - 推送到 ECR 时的 Docker 镜像大小与本地不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087700/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com