Dan*_*Dan 5 amazon-ec2 amazon-web-services docker aws-ecr
我正在创建一个 mongodb docker 映像,其中包含我的组织主数据库的备份生产数据。但是,当我尝试向上推此图像时,我遇到了此错误。
[root@ip-1-2-3-4 inf-tool-docker-mongo]# docker push 1234567.dkr.ecr.us-east-1.amazonaws.com/inf-data-mongo:2.6-latest
The push refers to repository [1234567.dkr.ecr.us-east-1.amazonaws.com/inf-data-mongo]
e429ba9ffbf8: Pushing [==================================================>] 87.35GB/87.35GB
fbd84d2027f9: Pushing [==================================================>] 87.35GB/87.35GB
4f8f8804b65d: Pushed
140b510fa705: Pushed
a2f3704a5dbf: Pushed
c362c0ad1002: Pushed
16817a92834f: Pushed
5a637bac3303: Pushed
32f938d6fb4c: Pushed
70d8dfa3043e: Pushed
denied: Adding this part to the layer with upload id '1234567890-12345-12345-123456-12345' in the repository with name 'inf-data-mongo' in registry with id '1234567890' exceeds the maximum allowed size of a layer which is '10737418240'
Run Code Online (Sandbox Code Playgroud)
我的图像大小约为 85GB-100GB,因为其中包含大量数据。Docker 映像运行良好,但当我将其推送到 AWS ECR 时,出现此错误。
我在这里看到了服务限制页面:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/service_limits.html
不过,它的措辞有点令人困惑。我在这里真的无能为力吗?当然,我不是唯一一个为了方便而想要发布大型 Docker 镜像的人?我前进的最佳道路是什么?
谢谢!
您可能应该将数据库内容存储在 S3 之类的位置,并将其与数据库 Docker 映像分开传送。
通常,Docker 映像仅包含要运行的程序,并且如果存在与其关联的持久状态(例如数据库的数据),则该程序会单独存储。你将用类似的东西运行你的图像
docker run --name mongo -v $PWD/mongo:/data mongo
Run Code Online (Sandbox Code Playgroud)
一般来说,如果您完成了此操作,您可以docker stop创建容器,docker rm然后是docker run针对同一数据存储的新容器。如果这可行,那么将数据移植到其他地方也可以。
因此,我建议您使用未修改的数据库映像并单独分发其数据的工作流程。您可能想要一个看起来像这样的引导脚本
docker run --name mongo -v $PWD/mongo:/data mongo
Run Code Online (Sandbox Code Playgroud)
当我过去尝试处理非常大的图像时,docker build甚至docker push在小至 2-4 GB 的图像上也遇到了您在此处描述的各种问题(网络故障、超时等,甚至只是复制Docker 守护进程中的构建上下文),我想说 Docker 确实无法处理任何千兆字节大小的图像。
| 归档时间: |
|
| 查看次数: |
5003 次 |
| 最近记录: |