Docker - Windows 上容器的 IP 地址
Docker - IP address of container on Windows
任务如下:
编写 node.js 将与 ScyllaDB 一起工作的服务器,该服务器将放置在 Docker 容器中。
我早些时候这样做了,但是在 Ubuntu 上,它工作正常,现在我应该在 Windows 10.
上做
我为来自 scylladb 文档的 Windows 和 运行 命令安装了 Docker 工具箱。
$ docker run --name some-scylla -d scylladb/scylla
af51fa65627303db16a3de85003be8a165a64f37cf6ae29c0b4e887d64342ad2\
$ docker exec -it some-scylla cqlsh
Connected to at 172.17.0.2:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> CREATE KEYSPACE nodeTask WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
在我的 Node.js 服务器上之后,我可以设置连接:
const cassandra = require("cassandra-driver")
const client = new cassandra.Client({
contactPoints: ["127.0.0.1"],
localDataCenter: "datacenter1",
keyspace: "nodetask"
})
正如我所说,它在 Ubuntu 上使用此 IP - 127.0.0.1 工作正常,BeaverDB(GUI) 默认使用 9042 端口连接到此 IP,但在 Windows 上它没有工作。现在无法在 Ubuntu 上工作。
抱歉提出了一个糟糕的问题,也许还有一些信息,但我是新手,根本不知道我到底需要告诉什么
127.0.0.1
是环回地址,因此您的 Node.js 容器会不断 ping 自身而不是主机(您的笔记本电脑)。您可以创建自己的桥接网络并将两个容器附加到该桥接网络
docker network create scylla-net
现在运行ScyllaDB容器如下
docker run --name some-scylla -d --net=scylla-net scylladb/scylla
在您的 Node.js 脚本中,将 127.0.0.1
更改为 some-scylla
(您的 ScyllaDB 容器的名称)。用户定义的桥接网络的妙处在于,它们让您的容器通过它们的名称相互通信。因此名称 some-scylla
将解析为 some-scylla
容器当时使用的任何 IP 地址。
现在,当您 运行 您的 Node.js 服务器时,请务必传递 --net=scylla-net
标志,否则它将无法解析名称 some-scylla
。希望这对您有所帮助!
任务如下: 编写 node.js 将与 ScyllaDB 一起工作的服务器,该服务器将放置在 Docker 容器中。 我早些时候这样做了,但是在 Ubuntu 上,它工作正常,现在我应该在 Windows 10.
上做我为来自 scylladb 文档的 Windows 和 运行 命令安装了 Docker 工具箱。
$ docker run --name some-scylla -d scylladb/scylla
af51fa65627303db16a3de85003be8a165a64f37cf6ae29c0b4e887d64342ad2\
$ docker exec -it some-scylla cqlsh
Connected to at 172.17.0.2:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> CREATE KEYSPACE nodeTask WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
在我的 Node.js 服务器上之后,我可以设置连接:
const cassandra = require("cassandra-driver")
const client = new cassandra.Client({
contactPoints: ["127.0.0.1"],
localDataCenter: "datacenter1",
keyspace: "nodetask"
})
正如我所说,它在 Ubuntu 上使用此 IP - 127.0.0.1 工作正常,BeaverDB(GUI) 默认使用 9042 端口连接到此 IP,但在 Windows 上它没有工作。现在无法在 Ubuntu 上工作。
抱歉提出了一个糟糕的问题,也许还有一些信息,但我是新手,根本不知道我到底需要告诉什么
127.0.0.1
是环回地址,因此您的 Node.js 容器会不断 ping 自身而不是主机(您的笔记本电脑)。您可以创建自己的桥接网络并将两个容器附加到该桥接网络
docker network create scylla-net
现在运行ScyllaDB容器如下
docker run --name some-scylla -d --net=scylla-net scylladb/scylla
在您的 Node.js 脚本中,将 127.0.0.1
更改为 some-scylla
(您的 ScyllaDB 容器的名称)。用户定义的桥接网络的妙处在于,它们让您的容器通过它们的名称相互通信。因此名称 some-scylla
将解析为 some-scylla
容器当时使用的任何 IP 地址。
现在,当您 运行 您的 Node.js 服务器时,请务必传递 --net=scylla-net
标志,否则它将无法解析名称 some-scylla
。希望这对您有所帮助!