- 发布于
Docker中运行mongoDB
- Authors
- Name
- 田中原
Docker中运行mongoDB
在Docker中使用MongoDB
通过Docker运行Mongo
docker run --name [name] -p 27017:27017 -v /data/db:/data/db -d mongo
-v/data/db:/data/db
将主机的/data/db
文件夹挂载在容器内的/data/db
在docker容器中运行MongoDB所产生的数据会保存在容器内部,容器停止后数据也将随之消失无法得到保存。所以为了将容器中的数据持久化,需要使用docker的数据卷,将主机上的文件夹映射到容器内部。这样容器运行时所产生的数据将会保存在主机的文件中。
NOTE: mac os 需要在Docker -> Preferences… -> File Sharing中添加共享的目录
-p 27017:27017
将容器内mongo的默认27017
端口映射至主机的27017
端口-d
后台运行—auth
开启Mongo的验证
进入Mongo shell
在主机上进入
docker exec -it <YOUR-NAME> mongo
设置管理员/用户
{
user:'testUser
pwd:'testPass',
roles:[{role:'readWrite',db:'test'}]
}
验证
通过本地mongo shell 连接远程服务器的mongoDB
mongo xx.xx.xx.xx:xxx/test -u "admin" -p "adminPass"
问题
在阿里云上通过docker运行mongo,在本地使用mongo尝试连接,连接不上
MongoDB shell version v3.4.0
connecting to: mongodb://xx.xx.xx.xx:xxxx
2017-09-08T16:16:28.584+0800 W NETWORK [main] Failed to connect to 47.52.30.225:25714 after 5000 milliseconds, giving up.
2017-09-08T16:16:28.587+0800 E QUERY [main] Error: couldn't connect to server xx.xx.xx.xx:xxxx, connection attempt failed :
connect@src/mongo/shell/mongo.js:234:13
@(connect):1:6
exception: connect failed
解决
在本地连接不上远程的数据库是因为我将docker端口和服务器端口映射写反了。
出现类似的问题应该如何排查
- 检查端口号配置
- 检查账号密码设置
- 检查阿里云安全组设置
购买的云主机服务,初始的时候除了ssh外的端口,所有对外的端口都是被屏蔽的。需要去手动去阿里云的安全组中将需要用到的端口配置打开,在外网才能访问