簡體   English   中英

Docker-Windows上容器的IP地址

[英]Docker - IP address of container on Windows

任務如下:編寫將與ScyllaDB一起使用的node.js服務器,該服務器將放置在Docker容器上。 我之前做過,但是在Ubuntu上運行良好,現在我應該在Windows 10上做。

我安裝了適用於Windows的Docker Toolbox,並從scylladb文檔運行命令。

$ 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"
})

正如我說的那樣,它在具有此IP-127.0.0.1的Ubuntu上運行良好,默認情況下,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 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM