[英]docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process
[英]Does user space program(runc) regulate the size of physical address space of a docker container process?
以下是在 AWS EC2 實例(Linux)上配置 ECS 任務容器的 CloudFormation 模板:
TodobackendTaskDefinition:
Type: "AWS::ECS::TaskDefinition"
Properties:
ContainerDefinitions:
- Name: todobackend
Image: someacct/todobackend
Memory: 450
MountPoints:
- ContainerPath: /var/www/todobackend
SourceVolume: webroot
- Name: nginx
Image: someacct/todobackend-nginx
Memory: 300
PortMappings:
- ContainerPort: "8000"
HostPort: "8000"
MountPoints:
- ContainerPath: /var/www/todobackend
SourceVolume: webroot
Volumes:
- Name: webroot
Host:
SourcePath: /ecs/webroot
TodobackendAdhocTaskDefinition:
Type: "AWS::ECS::TaskDefinition"
Properties:
ContainerDefinitions:
- Name: todobackend
Image: someacct/todobackend
Memory: 245
MountPoints:
- ContainerPath: /var/www/todobackend
SourcePath: webroot
Volumes:
- Name: webroot
Host:
SourcePath: /ecs/webroot
其中三個容器的內存屬性平均分配(450+300+250 MB),假設這 3 個容器在t2.micro
EC2 實例類型上運行,分配了 1 GB RAM(物理)
隨機更改這些值( "Memory"
)會使容器運行或失敗,而不知道正確的失敗原因。
在失敗時,我們會在 AWS 雲中進行調試時遇到此類錯誤:
容器不在 docker 上運行。 容器是進程——它們運行在 linux 內核上。 容器是 Linux 進程(或 Windows)
Docker 容器命名空間是使用runtime·clone()
系統調用在內部創建的。
內存管理將每個進程的虛擬地址空間映射到物理地址空間。 進程管理指的是虛擬地址,而不是物理地址。
對於上述代碼中的Memory: 300
MB 語法,AWS 文檔說:“呈現給容器的內存量(以 MiB 為單位)。”
在 docker 世界中, containerd
為每個新容器創建 shim 進程。 runc
實際上創建了一個容器進程。
1)分配RAM Memory: 300
MB size to a container process是什么意思?在上面的代碼中......它是進程的物理地址空間(或進程的虛擬地址空間)的大小嗎?
2) runc
用戶空間程序是否使用runtime·clone()
系統調用為每個容器進程設置物理內存空間( Memory: 300
MB)?
你不應該在這么小的memory
中使用memory
參數,記住這兩者之間有一個很大的區別,達到內存限制你的容器將被殺死。
使用 memoryReservation,您的容器可以消耗更多內存,如果一個容器處於負載狀態,那么它消耗的內存將超過所需的限制。
內存預留
為容器保留的內存的軟限制(以 MiB 為單位)。 當系統內存爭用時,Docker 會嘗試將容器內存保持在這個軟限制; 但是,您的容器可以在需要時消耗更多內存。
記憶
要呈現給容器的內存量(以 MiB 為單位)。 如果您的容器試圖超過此處指定的內存,則該容器將被終止。
其中這個內存參數不是由容器本身控制而是由 ECS 代理控制的。
如何計算每個 docker 容器所需的內存大小?
您的這個問題是一個問題,這完全取決於您將在容器中運行的底層應用程序。 我看到你正在使用 nginx 你可以在這里閱讀nginx-plus-sizing-guide
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.