如何为二进制方式安装的Docker配置systemctl服务
SLES 15 x86_64 二进制安装Docker后开机自启与无根启动配置方案
一、配置系统级Docker开机自启(root权限运行)
二进制安装Docker默认不会自动生成systemd服务文件,手动创建即可:
- 新建systemd服务配置文件
/etc/systemd/system/docker.service,内容如下:
[Unit] Description=Docker Application Container Engine After=network.target firewalld.service containerd.service Wants=containerd.service [Service] Type=notify # 请修改以下路径为你实际存放dockerd二进制的绝对路径 ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always StartLimitBurst=3 StartLimitInterval=60s LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target
- (可选)创建socket配置文件
/etc/systemd/system/docker.socket提升调用性能:
[Unit] Description=Docker Socket for the API [Socket] ListenStream=/var/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
- 重载systemd配置并启动服务、开启开机自启:
systemctl daemon-reload # 创建docker用户组(如果不存在) getent group docker || groupadd docker systemctl enable --now docker.service docker.socket
- 验证服务运行状态:
docker info - 如需普通用户可直接调用root运行的Docker服务,执行
usermod -aG docker 目标用户名,重新登录后生效。
二、配置无根Docker(普通用户权限运行)
无根Docker不需要root权限即可运行,安全级别更高,配置步骤如下:
- 先安装前置依赖包:
zypper install -y shadow uidmap
- 确认普通用户的uid/gid映射配置存在,检查
/etc/subuid、/etc/subgid文件中是否有对应用户的条目,格式如下(若不存在则手动添加):
你的用户名:100000:65536
- 切换到目标普通用户,执行以下操作,不要使用root身份:
- 创建用户级systemd服务目录:
mkdir -p ~/.config/systemd/user/ - 新建服务配置文件
~/.config/systemd/user/docker.service,内容如下:
[Unit] Description=Docker Application Container Engine (Rootless) [Service] Type=notify # 请修改以下rootlesskit、dockerd路径为你实际二进制存放的绝对路径 ExecStart=/usr/bin/rootlesskit --net=slirp4netns --disable-host-loopback --copy-up=/etc --copy-up=/run /usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID Restart=always RestartSec=2 LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity Delegate=yes KillMode=process [Install] WantedBy=default.target- 重载用户级systemd配置并启动服务、开启自启:
systemctl --user daemon-reload systemctl --user enable --now docker.service- 允许用户服务在登出后保持运行(切换回root身份执行):
loginctl enable-linger 你的用户名 - 创建用户级systemd服务目录:
- 验证无根Docker运行状态:普通用户执行
docker info确认输出正常。
内容的提问来源于stack exchange,提问作者mamol
相关产品推荐
相关产品推荐

