Docker compose 如何在docker swarm中应用cgroup父级?

Docker compose 如何在docker swarm中应用cgroup父级?,docker-compose,docker-swarm,docker-swarm-mode,cgroups,Docker Compose,Docker Swarm,Docker Swarm Mode,Cgroups,Docker swarm不支持cgroup_parent,根据其文档: 我需要为在特定主机上运行的整个docker容器集设置资源约束(而不仅仅是每个容器约束)。运行vanilla Docker(非Swarm模式)允许提供cgroups父级: docker run -it --rm --cgroup-parent=/climit-cgroup/ <<image-name>> docker run-it--rm--cgroup parent=/climit cgroup/

Docker swarm不支持cgroup_parent,根据其文档: 我需要为在特定主机上运行的整个docker容器集设置资源约束(而不仅仅是每个容器约束)。运行vanilla Docker(非Swarm模式)允许提供cgroups父级:

docker run -it --rm --cgroup-parent=/climit-cgroup/ <<image-name>>
docker run-it--rm--cgroup parent=/climit cgroup/
或者,如果使用docker编写文件,请使用
cgroup\u parent


但在swarm节点中运行docker容器并不能提供这种能力。在Docker Swarm的范围内,这个问题的可能解决方案是什么?有没有办法在当前主机的swarm节点上强制使用现有的cgroup?

我正在尝试将cgroup与systemd一起在守护进程级别使用

文件:/etc/systemd/system/dockerdaemon.slice

[Unit]
Description=Slice with MemoryLimit=800M for docker
Before=slices.target

[Slice]
MemoryAccounting=true
MemoryLimit=800M
更改/etc/docker/daemon.json并添加

"cgroup-parent": "dockerdaemon.slice"
然后

然后是/etc/systemd/system/docker.service.d/docker.conf

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
Slice=dockerdaemon.slice
MemoryMax=800M

sudo systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─docker.conf
   Active: active (running) since Thu 2020-08-20 08:58:45 UTC; 1h 32min ago
     Docs: https://docs.docker.com
 Main PID: 12718 (dockerd)
    Tasks: 17
   CGroup: /dockerdaemon.slice/docker.service
           └─12718 /usr/bin/dockerd
我也检查一下

/sys/fs/cgroup/memory/dockerdaemon.slice/docker.service# cat memory.limit_in_bytes 
838860800
所以看起来守护进程正在接收cgroup,但是当我创建超过800M的容器时,docker并没有阻止它。 此外,docker system info仍然可以看到所有内存


因此,在我看来,这似乎不起作用,或者可能是我做错了什么

我也有同样的问题。我担心Docker Swarm根本无法使用此功能。
/sys/fs/cgroup/memory/dockerdaemon.slice/docker.service# cat memory.limit_in_bytes 
838860800