Dockerd 作为 ServiceUnit 运行会改变 /tmp 访问权限

Dockerd 作为 ServiceUnit 运行会改变 /tmp 访问权限

这是我使用 dockerd 及其插件开发 Docker 容器的第一个成功周,最近我在自动化守护进程后发现了一些问题。

试图操纵docker 复制代码作为 systemd 单元,以 root 身份加载系统范围的在 /usr/lib/systemd/系统/*但我遇到了下面所述的问题;

  • 我想在特定用户“docker”下运行 docker-daemon.service 和 containerd,但我不确定如何设置范围/切片功能。
  • 不知道 Unit 套接字文件的功能,或者它是否是实际的 unix 套接字或文件描述符,或者其实际的文件可见性隔离目的。
  • 一旦守护进程启动,X11 将不会再次加载,APT 也不会加载,因为服务守护进程会以某种方式改变 /tmp 权限。我已将 /tmp 设置为 rw、exec、suid,但没有成功。
  • 我确实没有完全关注 Systemd 安全性,因此这些选项(LockPersonality、NoNewPrivileges、RestrictNamespaces 等)被注释掉了。

    我唯一感兴趣的是了解 SYSCAPS 或之前提到的服务单元安全操作员是否能够使守护进程和 /tmp 权限可用。


    这是我的实际工作文件。docker

    -daemon.service
[Unit]
Description=Docker Daemon Service
Requires=docker-daemon.socket
ConditionUser=root

[Service]
Type=notify
Environment="DOCKER_TMPDIR=/tmp"
Environment="DOCKER_OPTS='--data-root /tmp/doc --dns 127.0.0.1 --log-level info --experimental -H unix://'"
#ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376 --containerd=/run/containerd/containerd.sock
Environment="PATH=/opt/boot/docker/:/sbin/:$PATH"
ExecStart=/opt/boot/docker/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
#LockPersonality=yes
#MemoryDenyWriteExecute=yes
#NoNewPrivileges=no
Restart=on-failure
#RestrictNamespaces=no
#SystemCallArchitectures=native
#SystemCallFilter=@system-service
TimeoutSec=20
RestartSec=5
UMask=0077
Slice=session.slice

[Install]
Also=docker-daemon.socket
WantedBy=default.target

docker-daemon.socket

[Unit]
Description=Dockerd Daemon socket
ConditionUser=root

[Socket]
Priority=6
Backlog=5
ListenStream=%t/docker/docker

[Install]
WantedBy=sockets.target

相关内容