问题描述
在使用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主机具有不同的内核,因此不能直接运行在对方内核上的容器。
要解决这个问题,确保以下几点:
- 使用正确的命令来加入Swarm。正确的命令应该包含正确的token和MANAGER-IP。在manager节点上运行以下命令以获取worker token:
bash
docker swarm join-token -q worker
然后,使用得到的worker token在Linux容器模式下加入Swarm。
-
在Swarm中使用相同版本的Docker引擎。确保所有参与Swarm的主机都使用相同版本的Docker引擎,以避免版本不兼容的问题。
-
如果你想在Swarm中同时运行Linux和Windows容器,需要确保Swarm中有运行Linux的主机和运行Windows的主机,各自在适合的内核环境下运行容器。这样它们可以通过相同的Docker网络进行通信。
-
参考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