Docker Swarm加入Linux容器错误 – 远程CA与指纹不匹配

126次阅读
没有评论

问题描述

在使用Docker Swarm时遇到了一个问题。他在Windows 10上以Windows容器模式启动Docker Swarm是正常的,但在Linux容器模式下加入Swarm时遇到了以下错误:

错误:

Error response from daemon: remote CA does not match fingerprint. Expected: 91030413f17ec7c023a2a796ee05a024915080ca8dfd646a597c7e966f667df6

他希望能够解决这个错误并正确加入Docker Swarm。

解决方案

请注意以下操作可能存在版本差异,建议在操作前备份数据。

方案1

这个错误提示表明远程CA(Certificate Authority,证书授权机构)的指纹不匹配。通常情况下,这是由于在不同的主机之间加入Docker Swarm时出现的问题。主要原因是Linux主机和Windows主机具有不同的内核,因此不能直接运行在对方内核上的容器。

要解决这个问题,确保以下几点:

  1. 使用正确的命令来加入Swarm。正确的命令应该包含正确的token和MANAGER-IP。在manager节点上运行以下命令以获取worker token:

bash
docker swarm join-token -q worker

然后,使用得到的worker token在Linux容器模式下加入Swarm。

  1. 在Swarm中使用相同版本的Docker引擎。确保所有参与Swarm的主机都使用相同版本的Docker引擎,以避免版本不兼容的问题。

  2. 如果你想在Swarm中同时运行Linux和Windows容器,需要确保Swarm中有运行Linux的主机和运行Windows的主机,各自在适合的内核环境下运行容器。这样它们可以通过相同的Docker网络进行通信。

  3. 参考Docker Engine on Windows获取更多信息,确保在不同平台之间正确配置Docker引擎。

方案2

如果你确认使用了正确的token,但仍然遇到了这个问题,可以尝试重新获取token并再次加入Swarm。同时,确保在加入Swarm之前已经停止了之前可能出现问题的操作。

以下是一个简单的bash脚本示例,用于在Linux容器模式下加入Docker Swarm:

#!/bin/bash
# 获取worker token
worker_token=$(docker swarm join-token -q worker)
# 加入Swarm
docker swarm join --token $worker_token MANAGER-IP:2377

这个脚本首先获取worker token,然后使用得到的token加入Swarm。请将MANAGER-IP替换为正确的Swarm manager的IP地址。

以上两种方案中,你应该根据你的具体环境和需求选择合适的解决方案。确保你的操作正确且符合Swarm的要求,以解决远程CA指纹不匹配的问题。

在解决这个问题之后,你可以使用以下命令来验证Swarm的状态:

docker node ls

这将列出所有的Swarm节点,确保它们都处于正确的状态。

如果你仍然遇到问题,请参考Docker官方文档和社区支持,以获得更多帮助和解决方案。

【参考链接】:
Docker Engine on Windows

正文完