在docker上启用实时还原无法使conatiner保持活动状态

问题描述 投票:0回答:1

我读了Enable Live Restore,但是当我尝试它时。

ubuntu@ip-10-0-0-230:~$ cat /etc/docker/daemon.json 
{
  "live-restore": true
}

我以分离模式启动了Nginx容器。

sudo docker run -d  nginx
c73a20d1bb620e2180bc1fad7d10acb402c89fed9846f06471d6ef5860f76fb5 


$sudo docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              

c73a20d1bb62        nginx               "nginx -g 'daemon of…"   5 seconds ago       Up 4 
seconds

然后我停止了dockerd

sudo systemctl stop snap.docker.dockerd.service

并且我检查没有容器在运行

ps aux | grep nginx

此后,我重新启动了docker服务,但我仍然没有任何容器。

任何想法?此启用实时还原如何工作?

docker service docker-daemon
1个回答
0
投票

documentation,修改daemon.json(添加"live-restore": true)后,您需要:

重新启动Docker守护程序。在Linux上,您可以通过重新加载Docker守护程序来避免重启(并避免容器出现任何停机)。如果使用systemd,请使用命令systemctl reload docker。否则,将SIGHUP信号发送到dockerd进程。

您也可以这样做,但不建议这样做:

[如果愿意,可以使用--live-restore标志手动启动dockerd进程。不建议使用此方法,因为它没有设置启动Docker进程时systemd或其他进程管理器将使用的环境。这可能会导致意外行为。

似乎您没有完成此步骤。您说已经对daemon.json进行了修改,并直接启动了一个容器,然后停止了dockerd

为了使Live Restore功能正常工作,请按照正确的顺序执行所有步骤:

  1. 通过添加daemon.json来修改"live-restore": true
  2. 重新加载Docker守护程序,并使用以下命令:sudo systemctl reload docker

然后在您的示例中尝试该功能(启动一个容器并使守护程序不可用)。

重新启动守护程序时也要小心,文档说::>

重启后实时还原

实时还原选项仅在守护程序选项(例如网桥IP地址和图形驱动程序)未更改的情况下才能还原容器。如果这些守护程序级别的配置选项中的任何一个已更改,则实时还原可能无法正常工作,您可能需要手动停止容器。

还有停机时间:

实时还原对正在运行的容器的影响

如果守护程序长时间关闭,正在运行的容器可能会填满该守护程序通常读取的FIFO日志。完整的日志会阻止容器记录更多数据。默认缓冲区大小为64K。如果缓冲区已满,则必须重新启动Docker守护程序以刷新它们。

[在Linux上,您可以通过更改/proc/sys/fs/pipe-max-size来修改内核的缓冲区大小。

我已经测试过,如果您按顺序执行以下步骤,它将起作用:

LiveRestore

Docker version 19.03.2, build 6a30dfcUbuntu 19.10 (Eoan Ermine)测试

© www.soinside.com 2019 - 2024. All rights reserved.