【发布时间】:2021-10-02 10:03:53
【问题描述】:
我正在运行标准的 mongodb 容器(带有修改后的 docker 入口点和配置) 我尝试更改配置文件并启动脚本以使用我的 IPv6 地址或 :: (all/any) 我尝试包括 --ipv6 不同的帖子说需要或不再使用。似乎当 mongo 配置尝试绑定到所有 ipv6 地址时,我失去了整个容器的互联网连接(无法使用 apt update)。
码头工人命令:
docker run -d -v /Docker/entrypoint/:/usr/local/bin/ -v /Docker/mongoconfig/mongod.conf.orig:/etc/mongod.conf.orig -p 27017:27017 mongo:5.0.3
我尝试过使用不同的 docker 入口点代码。
尝试 1 个 docker-entrypoint.sh:
#!/bin/bash
exec mongod --bind_ip '::' --ipv6
尝试 2 docker-entrypoint.sh:
#!/bin/bash
exec mongod --bind_ip [134:1234:134:1324:1234:134:1234:3]
尝试 3 docker-entrypoint.sh:
#!/bin/bash
exec mongod --bind_ip [134:1234:134:1324:1234:134:1234:3] --ipv6
尝试 4 个 docker-entrypoint.sh:
#!/bin/bash
exec mongod --bind_ip_all
mongo 配置几乎保持不变,通过注释掉来交换绑定 IP 和 ipv6,如下所示:
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
#bindIp: 134:1234:134:1324:1234:134:1234:3
bind_ip = 0::0
ipv6 = true
ps -auxwe 输出
root 1 0.8 5.4 1540940 111092 ? Ssl 09:38 0:01 mongod --bind_ip :: --ipv6 HOSTNAME=6cb245ebc947 PWD=/ HOME=/root MONGO_PACKAGE=mongodb-org
网络统计输出
netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.17.0.3:45684 91.189.88.152:80 TIME_WAIT -
tcp 0 0 172.17.0.3:39324 91.189.91.38:80 TIME_WAIT -
tcp 0 0 172.17.0.3:54468 91.189.88.142:80 TIME_WAIT -
tcp 0 0 172.17.0.3:40844 13.227.219.90:80 TIME_WAIT -
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 1635933 1/mongod /tmp/mongodb-27017.sock
mongoshell:
mongo --ipv6 [134:1234:134:1324:1234:134:1234:3]:27017/local
MongoDB shell version v5.0.3
connecting to: mongodb://[134%31234%3134%31324%31234%3134%31234%33]:27017/local?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server [134:1234:134:1324:1234:134:1234:3]:27017, connection attempt failed: SocketException: Error connecting to [134:1234:134:1324:1234:134:1234:3]:27017 (134:1234:134:1324:1234:134:1234:3:27017) :: caused by :: No route to host :
connect@src/mongo/shell/mongo.js:372:17
当我只将 --ipv6 传递给入口点时,我的 netstat 确实确认了 mongo 监听mongod --ipv6
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1/mongod
tcp6 0 0 ::1:27017 :::* LISTEN 1/mongod
【问题讨论】:
-
补充一下,我可以从Mongo的日志中看到它找不到IPv6地址。不管我用什么。 ``` {"t":{"$date":"2021-10-02T11:50:21.623+00:00"},"s":"W", "c":"NETWORK", "id" :23021, "ctx":"initandlisten","msg":"找不到对等点的地址","attr":{"peer":{"code":7,"codeName":"HostNotFound","errmsg" :"找不到地址 [[::]]:27017: SocketException: Host not found (authoritative)"}}} ``