首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头司机将cgroup司机改为systemd

码头司机将cgroup司机改为systemd
EN

Stack Overflow用户
提问于 2017-05-04 23:18:48
回答 6查看 74.2K关注 0票数 31

我要码头从系统组司机开始。出于某种原因,它只在我的CentOS 7服务器上使用cgroupfs。

这里是启动配置文件。

代码语言:javascript
复制
# systemctl cat docker
# /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/docker.service.d/docker-thinpool.conf
 [Service]
 ExecStart=
 ExecStart=/usr/bin/dockerd --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool \
 --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true
 EOF

当我启动Docker的时候,它是这样运行的:

代码语言:javascript
复制
# ps -fed | grep docker
root      8436     1  0 19:13 ?        00:00:00 /usr/bin/dockerd-current --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true
root      8439  8436  0 19:13 ?        00:00:00 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc

这是docker info的输出

代码语言:javascript
复制
# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 185.6 MB
 Data Space Total: 1.015 GB
 Data Space Available: 829.4 MB
 Metadata Space Used: 77.82 kB
 Metadata Space Total: 8.389 MB
 Metadata Space Available: 8.311 MB
 Thin Pool Minimum Free Space: 101.2 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.135-RHEL7 (2016-11-16)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null bridge overlay host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-514.16.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 2
CPUs: 1
Total Memory: 992.7 MiB
Name: master
ID: 6CFR:H7SN:MEU7:PNJH:UMSO:6MNE:43Q5:SF4K:Z25I:BKHP:53U4:63SO
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8
Registries: docker.io (secure)

如何使它与systemd一起运行?

谢谢SR

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-05-09 00:02:34

因为我有两个配置文件,所以我需要在第二个配置文件中添加条目-- /etc/systemd/system/docker.service.d/docker-thinpool.conf

代码语言:javascript
复制
--exec-opt native.cgroupdriver=systemd \
票数 17
EN

Stack Overflow用户

发布于 2021-01-24 11:48:07

不涉及编辑系统单元或插入的解决方案是创建(或编辑) /etc/docker/daemon.json配置文件,并包括以下内容:

代码语言:javascript
复制
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

保存后,重新启动您的码头服务。

代码语言:javascript
复制
sudo systemctl restart docker

这个解决方案显然是可行的,只有当你想要应用这个系统的范围。

票数 73
EN

Stack Overflow用户

发布于 2020-03-11 06:22:26

简单地说,cgroupfs是dockers自己的控制组管理器。然而,由于大多数Linux发行版ssytemd现在是默认的init系统,而systemd与Linux控制组有紧密的集成,在Kubernetes站点中,他们推荐使用systemd (见下文),因为使用cgroupfs和systemd似乎不是最优的。

因此,更好的方法是使用系统进行cgroup管理。kubelet默认配置为使用systemd。因此,更改Docker以使用systemd Cgroup驱动程序是更容易、更好的方法。

这种重叠的历史记录是在这里https://lwn.net/Articles/676831/

在Kubernetes网站上,他们推荐使用systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/

当系统d被选择为Linux发行版的init系统时,init进程生成和使用根控制组( Cgroup )并充当cgroup管理器。Systemd与cgroup紧密集成,并将按进程分配cgroup。可以将容器运行时和kubelet配置为使用cgroupfs。与systemd一起使用cgroupfs意味着将有两个不同的cgroup管理器。 控件组用于约束分配给进程的资源。单个cgroup管理器将简化所分配资源的视图,并且在默认情况下将对可用和正在使用的资源具有更一致的视图。当我们有两位经理时,我们最终会对这些资源有两种看法。我们已经看到了这样的情况:配置为使用cgroupfs作为kubelet和Docker的节点,以及在节点上运行的其余进程的systemd在资源压力下变得不稳定。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43794169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档