我要码头从系统组司机开始。出于某种原因,它只在我的CentOS 7服务器上使用cgroupfs。
这里是启动配置文件。
# 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的时候,它是这样运行的:
# 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的输出
# 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
发布于 2017-05-09 00:02:34
因为我有两个配置文件,所以我需要在第二个配置文件中添加条目-- /etc/systemd/system/docker.service.d/docker-thinpool.conf。
--exec-opt native.cgroupdriver=systemd \发布于 2021-01-24 11:48:07
不涉及编辑系统单元或插入的解决方案是创建(或编辑) /etc/docker/daemon.json配置文件,并包括以下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}保存后,重新启动您的码头服务。
sudo systemctl restart docker这个解决方案显然是可行的,只有当你想要应用这个系统的范围。
发布于 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在资源压力下变得不稳定。
https://stackoverflow.com/questions/43794169
复制相似问题