我在用Docker。
我正在尝试为我的本地机器更新mongo版本。我注意到,当我从版本(从3.4到3.6在docker-compose.yml)更新镜像时,尽管mongo镜像启动,但没有客户端(我的应用程序和studio 3 T)可以连接到新镜像(获得连接超时)。
我尝试的另一种方法是创建两个新的干净容器(一个版本3.4,另一个版本3.6,两者具有相同的凭据),并从3.4获取转储,将其复制到3.6容器并进行还原。还原工作,但当我尝试使用studio 3 T连接到3.6数据库时,我再次遇到连接问题。
下面是我的docker-compose.yml
文件:
version: '3.9'
services:
mongo:
image: mongo:3.4
ports:
- 27020:27017
volumes:
- mongo-test:/data/db
mongo-new:
image: mongo:3.6
ports:
- 27021:27017
volumes:
- mongo-test-new:/data/db
volumes:
mongo-test:
mongo-test-new:
我的垃圾堆里有一个小文件。
我很迷茫。为什么这么简单的事情就不可能发生呢?
**编辑1:**错误日志如下:
Connection failed.
SERVER [localhost:27021] (Type: UNKNOWN)
|_/ Connection error (MongoSocketReadException): Prematurely reached end of stream
Details:
Timed out after 5000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27021, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]
编辑2:添加docker日志
test-mongo-new-1 | 2023-04-17T02:58:54.545+0000 I CONTROL [initandlisten] MongoDB starting : pid=7 port=27017 dbpath=/data/db 64-bit host=f7bff9e5afa8
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] db version v3.6.23
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] git version: d352e6a4764659e0d0350ce77279de3c1f243e5c
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] allocator: tcmalloc
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] modules: none
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] build environment:
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] distmod: ubuntu1604
test-mongo-new-1 | 2023-04-17T02:58:54.546+0000 I CONTROL [initandlisten] distarch: x86_64
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I CONTROL [initandlisten] target_arch: x86_64
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I CONTROL [initandlisten] options: {}
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 W - [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I - [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 W STORAGE [initandlisten] Recovering data from the last clean checkpoint.
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I STORAGE [initandlisten]
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
test-mongo-new-1 | 2023-04-17T02:58:54.547+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=3417M,cache_overflow=(file_max=0M),session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),compatibility=(release="3.0",require_max="3.0"),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
test-mongo-new-1 | 2023-04-17T02:58:55.610+0000 I STORAGE [initandlisten] WiredTiger message [1681700335:610320][7:0x7f24b4718a40], txn-recover: Main recovery loop: starting at 3/4480
test-mongo-new-1 | 2023-04-17T02:58:55.611+0000 I STORAGE [initandlisten] WiredTiger message [1681700335:611263][7:0x7f24b4718a40], txn-recover: Recovering log 3 through 4
test-mongo-new-1 | 2023-04-17T02:58:55.696+0000 I STORAGE [initandlisten] WiredTiger message [1681700335:696453][7:0x7f24b4718a40], txn-recover: Recovering log 4 through 4
test-mongo-new-1 | 2023-04-17T02:58:55.744+0000 I STORAGE [initandlisten] WiredTiger message [1681700335:744249][7:0x7f24b4718a40], txn-recover: Set global recovery timestamp: 0
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten]
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten]
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
test-mongo-new-1 | 2023-04-17T02:58:55.762+0000 I CONTROL [initandlisten]
test-mongo-new-1 | 2023-04-17T02:58:55.772+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
test-mongo-new-1 | 2023-04-17T02:58:55.773+0000 I NETWORK [initandlisten] listening via socket bound to 127.0.0.1
test-mongo-new-1 | 2023-04-17T02:58:55.773+0000 I NETWORK [initandlisten] listening via socket bound to /tmp/mongodb-27017.sock
test-mongo-new-1 | 2023-04-17T02:58:55.773+0000 I NETWORK [initandlisten] waiting for connections on port 27017
test-mongo-new-1 | 2023-04-17T02:58:56.011+0000 I FTDC [ftdc] Unclean full-time diagnostic data capture shutdown detected, found interim file, some metrics may have been lost. OK
1条答案
按热度按时间unftdfkk1#
线索就在集装箱日志里。。
参见Compatibility Changes in MongoDB 3.6
当仅绑定到localhost时,这些MongoDB 3.6二进制文件只能接受来自运行在同一台机器上的客户端(包括
mongo
shell,副本集和分片集群部署中的其他成员)的连接。远程客户端无法连接到仅绑定到localhost的二进制文件。不幸的是,这意味着默认情况下无法从容器外部连接。
最简单的修复方法是通过添加
command
后缀来绑定所有可用的网络接口请参见不使用配置文件自定义配置