一、问题描述
某次Docker容器迁移过程中,误操作将Docker容器某实例在宿主机的进程进行了kill -9,之后就出现Docker容器无法启动的情况,报错:
Error response from daemon: transport is closing: unavailable
Error: failed to start containers: redis
现场版本为:Version: 18.09.0,EulerVersion: 18.09.0.335;执行:journalctl -f -u docker
,检查日志发现,一直报如下错误:
evel=error msg=“failed to get event” error=“rpc error
: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = “transport: Error while d
ialing dial unix /var/run/docker/containerd/containerd.sock: connect: connection refused”” module=libcontainerd namespace=moby
……
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time=“2024-06-19T10:30:53.9155namespace=plugins.moby
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time=“2024-06-19T10:30:53.9155Unavailable desc = all SubConns are in TransientFailure, latest connectio /var/run/docker/containerd/containerd.sock: connect: connection refused
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time=“2024-06-19T10:30:53.9156namespace=plugins.moby
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time=“2024-06-19T10:30:53.9156Unavailable desc = all SubConns are in TransientFailure, latest connectio /var/run/docker/containerd/containerd.sock: connect: connection refused
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time=“2024-06-19T10:30:53.9156namespace=plugins.moby
……
ERRO[2024-06-19T10:26:16.660260637+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”” module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.660237795+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660348293+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”” module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660411458+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660426872+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”” module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660348471+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.660472137+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660494300+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”” module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660543084+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660462992+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”” module=libcontainerd namespace=moby
ERRO[2024-06-19T10:26:16.660556509+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660617498+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.660632412+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660635126+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
ERRO[2024-06-19T10:26:16.660649206+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660703348+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660723215+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.660734981+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.660780917+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660776650+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
ERRO[2024-06-19T10:26:16.660804201+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.660868164+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.660891329+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.660915993+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
ERRO[2024-06-19T10:26:16.660884205+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.660998959+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.661027574+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661047578+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
ERRO[2024-06-19T10:26:16.661021067+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.661094698+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.661108809+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661109400+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
ERRO[2024-06-19T10:26:16.661129806+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.661165326+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661181341+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.661201465+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661217202+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.661230755+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661267993+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.661302225+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661335142+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=moby
DEBU[2024-06-19T10:26:16.661320281+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661428758+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.661474417+08:00] processing event stream module
ERRO[2024-06-19T10:26:16.661488028+08:00] failed to get event error=in TransientFailure, latest connection error: connection error: desc = “transport: Error whilrd.sock: connect: connection refused”" module=libcontainerd namespace=plugins.moby
DEBU[2024-06-19T10:26:16.661412627+08:00] processing event stream module
DEBU[2024-06-19T10:26:16.661531586+08:00] processing event stream
……
INFO[2024-06-19T10:26:16.933040406+08:00] pickfirstBalancer: HandleSubConnStateChange: 0xc0001
INFO[2024-06-19T10:26:17.157225051+08:00] pickfirstBalancer: HandleSubConnStateChange: 0xc0001
DEBU[2024-06-19T10:26:17.157250292+08:00] processing event stream module
INFO[2024-06-19T10:26:17.157634056+08:00] subscribe ctx=context.Background.WithCancel.WithCanchValue(type metadata.mdIncomingKey, val ).WithValue(type grpc.streamKey, val <noic~=|^/tasks/|]
INFO[2024-06-19T10:26:17.157678901+08:00] subscribe ctx=context.Background.WithCancel.WithCanchValue(type metadata.mdIncomingKey, val ).WithValue(type grpc.streamKey, val <noasks/|]
关联资源:Docker daemon goes down after many connection refused #1178
二、原因及处理
1、现场情况
docker info #输出如下
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 12
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Hugetlb Pagesize: 2MB, 1GB, 2MB, 1GB (default is 2MB)
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 871075eb7cc979944ba2d987719cb534bbb87e5c
runc version: d36503f0bdc96da64702b73054e26c8e6780e8de
init version: N/A (expected: )
Security Options:
seccomp
Profile: default
Kernel Version: 5.10.0-60.70.0.94.oe2203.bclinux.x86_64
Operating System: BigCloud Enterprise Linux For Euler 22.10 LTS
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 30.6GiB
Name: zq-fdfs-25
ID: EG7G:7NHU:HQID:RMSK:H2BO:HETE:THMY:WYB2:5FCG:NA6E:42XN:ISEZ
Docker Root Dir: /nvsdata/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: true
docker version #输出如下
Client:
Version: 18.09.0
EulerVersion: 18.09.0.335
API version: 1.39
Go version: go1.17.3
Git commit: 4ca0e26
Built: Tue May 14 19:09:05 2024
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.09.0
EulerVersion: 18.09.0.335
API version: 1.39 (minimum version 1.12)
Go version: go1.17.3
Git commit: 4ca0e26
Built: Wed May 8 00:00:00 2024
OS/Arch: linux/amd64
Experimental: false
systemctl status docker #异常情况下的docker状态
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2024-06-19 10:30:53 CST; 4s ago
Docs: https://docs.docker.com
Main PID: 16835 (dockerd)
Tasks: 25 (limit: 200356)
Memory: 58.8M
CGroup: /system.slice/docker.service
├─ 16835 /usr/bin/dockerd --live-restore
└─ 17037 containerd --config /var/run/docker/containerd/containerd.toml --log-lev
Jun 19 10:30:54 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:30:53.915505540+08:00" level=debug msg="processing event stream" module=libcontainerd namespace=plugins.moby
systemctl status -l docker #恢复正常的docker状态
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2024-06-19 10:43:18 CST; 21min ago
Docs: https://docs.docker.com
Main PID: 20626 (dockerd)
Tasks: 54 (limit: 200356)
Memory: 121.0M
CGroup: /system.slice/docker.service
├─ 20626 /usr/bin/dockerd --live-restore
├─ 20638 containerd --config /var/run/docker/containerd/containerd.toml --log-level debug
├─ 20773 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 63306 -container-ip 172.17.0.2 -contain>
├─ 20786 containerd-shim -namespace moby -workdir (这里多了几个进程)/nvsdata/docker/containerd/daemon/io.containerd.runtime.v1.>
└─ 20788 containerd-shim -namespace moby -workdir /nvsdata/docker/containerd/daemon/io.containerd.runtime.v1.>
Jun 19 10:43:18 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:43:18.374981878+08:00" level=info msg="API listen on /var/r>
Jun 19 10:43:18 zq-fdfs-25 systemd[1]: Started Docker Application Container Engine.
Jun 19 10:44:01 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:44:01.179085610+08:00" level=debug msg="Calling GET /_ping"
Jun 19 10:44:01 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:44:01.179415938+08:00" level=debug msg="Calling GET /v1.39/>
Jun 19 10:44:15 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:44:15.004189998+08:00" level=debug msg="Calling GET /_ping"
Jun 19 10:44:15 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:44:15.004884598+08:00" level=debug msg="Calling GET /v1.39/>
Jun 19 10:52:26 zq-fdfs-25 dockerd[20626]: time="2024-06-19T10:52:26.562339760+08:00" level=debug msg="Calling GET /_ping"
2、故障原因
因kill操作导致了docker元数据及相关文件损坏,docker服务关联的containerd无法与命名空间moby 正常建立通信,导致容器与docker daemon之间通信失败,无法对容器进行start管理操作;其中,从我们后来的结果对比来看,ontainerd-shim进程未启动是一个很重要原因,containerd下的shim是充当containerd和runc之间的中间件(代理),用来组装runc命令的参数,负责容器中进程的启动。在下图中也可以看到 containerd 不是直接调用 runc 的,而是通过 containerd-shim 来调用 runc的,而runc 专注于创建和运行符合 Open Container Initiative(OCI)规范的容器。整个过程中,containerd 是通过 containerd-shim 来调用 runc,调用 runc 后, 会把 containerd-shim 的挂到 system (pid=1)的进程下,这样当 containerd 挂掉或者重启时,containerd-shim 还是会继续运行的,这样就保证了容器的进程不会挂掉,容器的进程还会继续运行。
containerd-shim 可看做是一个轻量级的代理进程,它的主要作用是:
通过runC命令可以启动、执行容器、进程;
监控容器进程状态,当容器执行完成后,通过exit fifo文件报告容器进程结束状态;
当此容器SHIM的第一个实例进程被杀死后,reaper掉所有其子进程;
3、处理
相关网络经验表明,不只是18.09版本,其他版本(20.10.17)也出现过类似故障,该故障已被标记为bug,更多参看:docker-containerd breaks interaction with containers 、docker-containerd.sock: connect: connection refused
Docker相关文件目录说明回顾:
- /var/lib/docker/containers:是 Docker 存储容器相关数据的默认位置。在 Docker 中,每个容器都会被视为一个独立的实体,其相关数据(如容器的配置信息、状态信息、日志等)都会存储在 /var/lib/docker/containers 目录下的对应目录中;每个子目录都对应一个 Docker 容器,子目录的名称通常是由容器的 ID 组成的一串字符
- /var/lib/docker/image/:存储容器镜像的数据,每个容器镜像对应一个目录,包含容器镜像的元数据、图层等信息。镜像的相关数据,例如镜像文件、元数据、缓存等,都会存储在 /var/lib/docker/image/ 目录下的对应目录中。其中,image.db是一个 SQLite 数据库文件,用于存储 Docker 镜像的元数据信息,例如镜像的名称、标签、大小、创建时间等。image/:这是一个软链接(symlink),指向存储镜像文件的实际目录(如 aufs、overlay2、overlay 中的其中一个)。这个软链接的目的是为了向后兼容,以支持不同的存储驱动。
需要注意的是,/var/lib/docker/image/ 目录下的数据都是 Docker 引擎自动管理和维护的,对这些数据进行手动修改可能会导致镜像无法正常使用或数据丢失。因此,不推荐直接对 /var/lib/docker/image/ 目录下的文件和目录进行修改。- /var/lib/docker/volumes/:存储容器卷的数据,每个容器卷对应一个目录,包含容器卷的数据。 Docker 中,容器卷是一种用于持久化存储容器数据的机制,可以在容器之间共享和重用数据。/var/lib/docker/volumes/ 目录下包含了 Docker 卷相关的数据和元数据。/var/lib/docker/volumes/ 目录下的数据都是 Docker 引擎自动管理和维护的,对这些数据进行手动修改可能会导致容器卷无法正常使用或数据丢失。
- /var/lib/docker/network/:存储 Docker 网络的数据,包含 Docker 网络的配置和状态信息。该目录下包含了 Docker 网络驱动所使用的配置文件、状态信息等。
- /var/lib/docker/overlay2:是 Docker 存储驱动程序之一 Overlay2 的默认存储目录,用于保存 Docker 容器镜像和容器数据。Overlay2 是一个基于内核的图层存储驱动程序,可以通过将多个只读层叠加到单个可写层来创建 Docker 容器。Overlay2 驱动程序使用了基于 inode 的存储模型,它将不同的图层都挂载到相同的文件系统目录下,同时使用不同的命名空间来进行隔离。每个容器都对应一个文件夹,文件夹的名称是由两个长随机字符串组成的,每个字符串对应一个不同的命名空间。其中一个字符串对应于 Overlay2 驱动程序的命名空间,它用于标识这个容器的图层;另一个字符串对应于挂载点的命名空间,用于在宿主机文件系统中创建一个目录,用于挂载这个容器的可写层。
每个容器的文件夹中包含多个子目录,其中最重要的是 diff 目录,它用于存储容器的可写层。当 Docker 容器需要修改文件时,Overlay2 驱动程序会将这些修改记录在 diff 目录下的文件中。除了 diff 目录,每个容器的文件夹中还包含 merged 目录、lowerdir 目录和 upperdir 目录,用于存储容器的只读层和可写层。
具体来说,当 Docker 运行容器时,它会在 /var/lib/docker/overlay2 目录下为容器创建一个唯一的文件夹,其中包含了容器的文件系统的层级结构。该文件夹的名称以 l 开头,后跟 64 个字符的十六进制字符串,这个字符串是该容器的唯一 ID;在这个目录中,Overlay2 存储了容器的所有文件系统层。当容器启动时,Docker 会将这些层级结构组合在一起,形成容器的完整文件系统,使其看起来像是一个完整的文件系统,而实际上是由多个层级结构组合而成的。此外,该目录下还包含了一些元数据,用于管理这些层和容器。例如,该目录下的 diff 子目录存储了容器文件系统的写入层,而 merged 子目录是通过将不同层级的文件系统层级结构合并而成的,work 子目录用于 Overlay2 内部操作。- /var/lib/docker/tmp/:存储 Docker 引擎的临时数据,如构建镜像时的临时文件等。
- /var/lib/docker/swarm/:存储 Docker Swarm 模式下的数据,包括 Swarm 集群的配置和状态信息。
- /var/lib/docker/trust/:存储 Docker 引擎的签名和证书数据,用于 Docker 镜像的安全性验证。
- /var/lib/docker/containerd/:负责容器生命周期管理,能起、停、重启,确保容器运行。负责镜管理,提供一致的运行环境(该文件下数据删除后可有Docker重建);其中,metadata.db: containerd 的元数据数据库文件,存储了镜像、容器、卷等的元数据信息。napshots: 存储了容器的文件系统快照。shim--init.log: 容器的初始化日志文件。shim--state.json: 容器的状态文件。shim--fork.log: 容器启动时的日志文件;io.containerd.content.v1.content: 存储了镜像层内容的数据。io.containerd.metadata.v1.meta: 镜像和容器元数据的实际数据文件。io.containerd.snapshotter.v1.snapshots: 镜像层快照的数据文件;io.containerd.timeouts.v1.timeouts: 容器启动和停止的超时设置。
//网络经验方法:
docker kill/stop $(docker ps -q) #关停所有容器
killall -9或-HUP dockerd主进程
sudo dockerd & #命令尝试启动,现场不管用,另外重启宿主机OS也不管用
#现场处理过程
systemctl stop docker
//进入Docker的服务目录
cd ./docker/containerd/daemon/
rm -rf ./* #情况当下目录的状态信息
systemctl start docker #这时,docker daemon会重建该目录喜爱文件,并重建网络,存储等,并重新完成registry,经检查后容器未丢失,镜像未丢失
journalctl -n 1000 -u docker|less #输出如下
Jun 19 10:41:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:41:47.490315821+08:00" level=debug msg="processing event stream" module=libcontainerd namespace=moby
Jun 19 10:41:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:41:47.490314725+08:00" level=error msg="failed to get event" error="rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial unix /var/run/docker/containerd/containerd.sock: connect: connection refused\"" module=libcontainerd namespace=plugins.moby
===========================之后的======================
Jun 19 10:42:47 zq-fdfs-25 systemd[1]: Stopping Docker Application Container Engine...
Jun 19 10:42:47 zq-fdfs-25 systemd-journald[610]: Suppressed 8797 messages from docker.service
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.520308164+08:00" level=info msg="Processing signal 'terminated'"
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.520508640+08:00" level=debug msg="daemon configured with a 15 seconds minimum shutdown timeout"
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.520524056+08:00" level=debug msg="start clean shutdown of all containers with a 15 seconds timeout..."
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521061937+08:00" level=debug msg="Unix socket /run/docker/libnetwork/9392302eb4cbfba699df5b9fd1270161a7395804f19b782923137383884b0629.sock doesn't exist. cannot accept client connections"
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521091866+08:00" level=debug msg="Cleaning up old mountid : start."
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521151201+08:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521327096+08:00" level=debug msg="Cleaning up old mountid : done."
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521435972+08:00" level=debug msg="Clean shutdown succeeded"
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521486880+08:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521498691+08:00" level=info msg="stopping healthcheck following graceful shutdown" module=libcontainerd
Jun 19 10:42:47 zq-fdfs-25 dockerd[20202]: time="2024-06-19T10:42:47.521701900+08:00" level=debug msg="received signal" signal=terminated
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521843087+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc000115770, TRANSIENT_FAILURE" module=grpc
Jun 19 10:42:47 zq-fdfs-25 dockerd[16835]: time="2024-06-19T10:42:47.521857116+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc000115770, CONNECTING" module=grpc
Jun 19 10:42:48 zq-fdfs-25 systemd[1]: docker.service: Deactivated successfully.
Jun 19 10:42:48 zq-fdfs-25 systemd[1]: Stopped Docker Application Container Engine.
Jun 19 10:43:17 zq-fdfs-25 systemd[1]: Starting Docker Application Container Engine...
Jun 19 10:43:17 zq-fdfs-25 dockerd[20626