我的目标是定义具有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,
如何在Docker主机中查找启动Docker容器所需的资源(RAM内存等。)?鉴于此Dockerfile
因为,这有助于决定在我的情况下选择特定的EC2实例类型(t2.micro
或其他)。不确定[RAM]"Memory":500
MB大小如何启动1.65 GB(磁盘空间大小)的Docker映像的Docker容器?因为我的理解是,docker容器=(docker_image层+ RW_layer)
对此问题没有规范的答案;它无法回答,因为运行时内存需求与存储需求完全脱钩,否则无法从Docker元数据派生。