Docker 上的节点 RED 写入 MYSQL 数据库
Node RED on Docker writing on MYSQL database
我是 运行 Docker 上的 Node-RED,我正在尝试将数据写入本地主机上的 MySQL。
作为主机,我正在使用本地主机(见图)
我收到错误:connection refused
。
我应该在这里使用哪个主机地址?不太明白容器和本地主机之间的通信。
localhost
始终指向打开连接的程序绑定到的 TCP/IP 堆栈。
每个 Docker 容器都有自己的 TCP/IP 堆栈,因此除非数据库 运行 在与 Node-RED 相同的容器中 localhost
将不是正确的主机名对于数据库。
你有3个选择
- 如果您使用 docker-compose,那么您可以使用容器名称作为主机名,它将连接到正确的容器。
- 您可以使用
docker inspect [container-instance-name]
找到分配给数据库容器的 IP 地址并使用它
- 如果您已经将容器端口映射到您的主机(使用
-p
选项),那么您可以使用通常默认为 172.17.0.1
的主机 IP 地址
编辑:
要连接到主机,您可以在 Docker 上使用 host.docker.internal
用于 Windows 和 Docker 用于 Mac(不幸的是 issue 修复此问题 Linux 已开放 3 年多)。
您应该还可以使用上面第 3 点中的 IP 地址。
我是 运行 Docker 上的 Node-RED,我正在尝试将数据写入本地主机上的 MySQL。
作为主机,我正在使用本地主机(见图)
我收到错误:connection refused
。
我应该在这里使用哪个主机地址?不太明白容器和本地主机之间的通信。
localhost
始终指向打开连接的程序绑定到的 TCP/IP 堆栈。
每个 Docker 容器都有自己的 TCP/IP 堆栈,因此除非数据库 运行 在与 Node-RED 相同的容器中 localhost
将不是正确的主机名对于数据库。
你有3个选择
- 如果您使用 docker-compose,那么您可以使用容器名称作为主机名,它将连接到正确的容器。
- 您可以使用
docker inspect [container-instance-name]
找到分配给数据库容器的 IP 地址并使用它 - 如果您已经将容器端口映射到您的主机(使用
-p
选项),那么您可以使用通常默认为172.17.0.1
的主机 IP 地址
编辑:
要连接到主机,您可以在 Docker 上使用 host.docker.internal
用于 Windows 和 Docker 用于 Mac(不幸的是 issue 修复此问题 Linux 已开放 3 年多)。
您应该还可以使用上面第 3 点中的 IP 地址。