docker-compose - 如何在docker swarm中应用cgroup parent?

根据文档,Docker swarm 不支持 cgroup_parent:https://docs.docker.com/compose/compose-file/#cgroup_parent 我需要为在特定主机上运行的整组 docker 容器设置资源约束(不仅仅是每个容器约束)。运行 vanilla Docker(不在 Swarm 模式下)允许提供 cgroups parent:

docker run -it --rm --cgroup-parent=/climit-cgroup/ <<image-name>>

或者如果使用 docker 使用 cgroup_parent 编写文件。

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

最佳答案

我正在尝试在 systemd 的守护进程级别使用 cgroups

文件:/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"

然后

systemctl daemon-reload ; service docker restart

然后/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 仍然可以看到所有内存

所以在我看来这不是很好,或者我做错了什么

https://stackoverflow.com/questions/57926782/

相关文章:

reactjs - props 没有传递给 react native 中的另一个组件

html - 使用具有 Angular Material 和 Flex Layout 的语义 HTM

javascript - 如何转到 Epubjs 中的特定页面

keras - LSTM 时间序列产生偏移预测?

node.js - 如何在 Node SOAP 中发送原始 XML 请求

python - Keras:使用 flow_from _directory() 函数为两个输入模型

reactjs - React-Select 从 1.x 升级到 3.0.4 - 未显示选定值

python - 如何让这段代码在时间上更加优化?

npm - 无法在 Nexus Repository Manager 2.10 上发布库

java - 从 jlink 图像创建所有包含 windows 可执行文件