Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode异常处理

现象

docker swarm init 初始化swarm网络报错

Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode
在这里插入图片描述

原因

–live-restore:在 Docker守护进程崩溃或重启时保持容器运行状态

Swarm 模式:容器的运行状态由 Swarm 管理,并且容器会自动重启到其他节点上

由此可见swarm 与 live-restore参数存在冲突 如果想要启动swarm需要 配置 live-restore = false

解决

如果启动了 live-restore 有两种情况

一、

在文件 /etc/docker/daemon.json中存在以下配置

{
  "live-restore": true
}

这种情况很简单直接把 ture 修改为 false 或者删掉这条配置,保存退出后重启docker进程即可

sudo systemctl restart docker

配置修改后重启docker进程

二、

当文件 /etc/docker/daemon.json 中不存在以下配置时或者 这个文件不存在时 那一定是dockerd 启动时带了这个这个参数
因为如果没有配置 默认 false

systemctl status docker.service
Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode异常处理_第1张图片
执行上面命令输出如下 可以看到 启动的时候带了 --live-restore 参数

根据loaded项可以得到启动的哪个 docker.service服务

打开docker.service文件 如下
Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode异常处理_第2张图片

在文件中找到 ‘ExecStart’ 这一项将 dockerd 后面的 --live-restore删掉 保存退出

修改了docker.server 文件后不能直接执行systemctl restart docker 会有异常提示如下:

The unit file, source configuration file or drop-ins of docker.service changed on disk. Run ‘systemctl daemon-reload’ to reload units

根据提示 运行以下命令 通知 systemd 系统管理器重新加载配置文件

systemctl daemon-reload

配置文件加载好后重启docker进程

systemctl restart docker

如下图:

Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode异常处理_第3张图片

结束

至此 docker swarm init 失败的问题已经解决

注:

在上面提到的第二种情况中

如果不修改docker.service 中的启动参数而是在daemon.json配置文件中配置 live-restore:false 这将导致无法启动docker进程

他会提示你docker 启动参数 和 daemon.json中都包含了这个参数且不一样,他不知道使用哪个的异常。
在这里插入图片描述

你可能感兴趣的:(docker,源码分析,docker,容器,运维,swarm)