Docker容器如何在500 MB RAM中启动?给定1+ GB的docker映像

问题描述 投票:-4回答:1

我的目标是定义具有RAM所需的适当内存大小的容器定义("ContainerDefinitions"),以启动docker容器。例如,jenkins容器的以下代码片段在500 MB RAM中启动,并且工作正常,不知道为什么

"EcsTaskDefinition": {
            "Type": "AWS::ECS::TaskDefinition",
            "Properties": {
                "ContainerDefinitions": [
                    {
                        "Name": "jenkins",
                        "Image": "somedockeraccount/jenkins:ecs",
                        "Memory": 500,
                        "PortMappings": [ { "ContainerPort": 8080, "HostPort": 8080 } ],

因为以下命令将该詹金斯映像的磁盘空间分配为1.64GB,可能不是docker映像的实际大小:

$ docker image ls
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
somedockeraccount/jenkins   ecs                 d9d23cc59412        38 hours ago        1.64GB
$ docker image inspect somedockeraccount/jenkins:ecs | grep -i size 
        "Size": 1640601180,
        "VirtualSize": 1640601180,

Docker镜像正在使用overlay2文件系统(/var/lib/docker/overlay2/

[docker ps -q | xargs docker inspect还显示overlay2文件系统

下面在本地测试的元数据也没有提供RAM大小要求的线索:

$ docker ps -q | xargs docker inspect | grep -i memory
            "Memory": 0,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,

1)

如何找到docker映像的实际大小?可以帮助我确定上方"Memory"中的"ContainerDefinitions"属性(RAM)...

2)

就我而言,"Memory":500 MB的RAM大小如何启动1+ GB(磁盘空间大小)的Docker映像的Docker容器?因为我的理解是,docker容器=(docker_image层+ RW_layer)

docker memory-management amazon-ecs
1个回答
1
投票

对此问题没有规范的答案;它无法回答,因为运行时内存需求与存储需求完全脱钩,否则无法从Docker元数据派生。

© www.soinside.com 2019 - 2024. All rights reserved.