为什么Yapi Docker安装后请求IP与宿主机不一致?

在使用Yapi进行接口管理时,有些用户选择在Docker容器中部署Yapi服务。然而,在部署完成后,他们可能会发现无法通过宿主机的IP地址访问Yapi服务,而是需要使用Docker容器的IP地址。这是因为Docker网络的特性导致的。

Docker网络模式

Docker提供了四种网络模式:bridge、host、overlay和macvlan。默认情况下,Docker容器是通过bridge模式连接到宿主机网络的,因此容器会有自己的IP地址,并且与宿主机的IP地址不一致。

解决方案

为了解决这个问题,我们可以使用host模式来运行Yapi Docker容器,这样容器将与宿主机共享网络命名空间,使用宿主机的IP地址。下面是一个示例:

docker run -d --name yapi -p 3000:3000 --network host registry.cn-hangzhou.aliyuncs.com/yapi/yapi

上面的命令中,--network host参数指定了使用host模式,容器将直接使用宿主机的网络。这样,你就可以通过宿主机的IP地址和端口来访问Yapi服务了。

序列图示例

下面是一个访问Yapi服务的序列图示例,展示了客户端通过宿主机IP地址访问Yapi服务的过程:

sequenceDiagram
    participant 客户端
    participant 宿主机
    participant Yapi容器

    客户端 ->> 宿主机: 发起请求
    宿主机 ->> Yapi容器: 转发请求
    Yapi容器 -->> 宿主机: 返回结果
    宿主机 -->> 客户端: 返回结果

关系图示例

最后,我们也可以使用ER图来展示Yapi Docker容器与宿主机之间的网络关系:

erDiagram
    宿主机 ||--|| Yapi容器 : 使用

通过以上方式,我们可以明确Yapi Docker安装后请求IP与宿主机不一致的原因,并给出了解决方案。希望这篇文章对你有所帮助!