我使用以下脚本创建了 cgroup 。的mygroup.slice
值为。 我可以看到 的内容为。memory.max
200M
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"
然后我用启动了一个 docker 容器cgroup-parent
。
docker run -d --cgroup-parent mygroup.slice --env CONTAINER_NAME=container1 --name container1 simple/container1
此后 的内容memory.max
将max
代替209715200
。
我怎样才能停止docker来覆盖它? 谢谢。
以下是我的环境的详细信息。
使用 cgroup v2。
stat -fc %T /sys/fs/cgroup/
cgroup2fs
以下是输出docker 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
我曾在Docker 社区论坛上问过这个问题,并得到了答案。
原因是Docker的cgroup驱动是systemd,我应该使用systemd来管理cgroup。
/etc/systemd/system/mygroup.slice
创建一个包含以下内容的文件。--cgroup-parent