我的本地机器上有一个 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: 我一直在使用卷将代码安装到我的容器中,这就是为什么它一直在本地工作。在构建时我忘记将代码复制到容器中,我认为这是不能批量工作的唯一原因!