我同时学习docker和mongodb,我试图在docker容器中导入一个JSON文件的集合,但有一个问题,因为这是一个容器,我使用绑定挂载将这个JSON从我的本地机器引用到我的容器,但如果我用绑定挂载运行它mongodb不会运行。
我使用以下命令使用bash运行容器:
sudo docker exec -it mongo-image bash
在容器中,我只写mongo
和终端从mongo工作如预期,如果我运行以下命令:
sudo docker run -it -v "$(pwd)":/MyData mongo:4.2 /bin/bash
我看到了本地机器上的文件,但是如果我输入mongo
,终端不让我启动
root@e753483bb65b:/# mongo
MongoDB shell version v4.2.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2021-07-30T21:05:14.037+0000 E QUERY [js] Error: couldn't connect to server
127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to
127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:353:17
@(connect):2:6
2021-07-30T21:05:14.040+0000 F - [main] exception: connect failed
2021-07-30T21:05:14.040+0000 E - [main] exiting with code 1
是否有任何建议,你可以给我导入json文件集合到mongo db docker容器或解决这个问题?
我认为您覆盖了mongo的默认运行命令,它与挂载和卷无关。我建议你改一下:
sudo docker run -it -v "$(pwd)":/MyData mongo:4.2 /bin/bash
在两个单独的命令中:
sudo docker run -d -v "$(pwd)":/MyData mongo:4.2
,然后当它打印运行容器的id时,创建一个交互式shell:
sudo docker exec -it fb82f /bin/bash
其中fb82f为docker容器的首字符。