Criei o cgroup mygroup.slice
com o seguinte script. O valor de memory.max
é 200M
. Posso ver o conteúdo de memory.max
é 209715200
.
sudo mkdir -p /sys/fs/cgroup/mygroup.slice
echo "200M" | sudo tee "/sys/fs/cgroup/mygroup.slice/memory.max"
echo "+memory" | sudo tee "/sys/fs/cgroup/mygroup.slice/cgroup.subtree_control"
cat "/sys/fs/cgroup/mygroup.slice/memory.max"
Então iniciei um contêiner docker com cgroup-parent
.
docker run -d --cgroup-parent mygroup.slice --env CONTAINER_NAME=container1 --name container1 simple/container1
Depois disso o conteúdo de memory.max
é max
em vez de 209715200
.
Como posso impedir que o docker substitua isso? Obrigado.
Aqui estão os detalhes do meu ambiente.
O cgroup v2 é usado.
stat -fc %T /sys/fs/cgroup/
cgroup2fs
Aqui está a saída dedocker version
docker version
Client: Docker Engine - Community
Version: 27.2.0
API version: 1.47
Go version: go1.21.13
Git commit: 3ab4256
Built: Tue Aug 27 14:15:45 2024
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.2.0
API version: 1.47 (minimum version 1.24)
Go version: go1.21.13
Git commit: 3ab5c7d
Built: Tue Aug 27 14:15:45 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.21
GitCommit: 472731909fa34bd7bc9c087e4c27943f9835f111
runc:
Version: 1.1.13
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Fiz essa pergunta no fórum da Comunidade Docker e obtive a resposta.
O motivo é que o driver cgroup do Docker é systemd. Eu deveria usar systemd para gerenciar o cgroup.
/etc/systemd/system/mygroup.slice
com o seguinte conteúdo.--cgroup-parent