docker的使用以及在docker中使用mongodb
参考博客:https://blog.csdn.net/laodengbaiwe0838/article/details/79340818
查看现有镜像
docker images
查看容器状态
docker ps
查看全部的容器
docker ps -a
删除镜像
docker rmi <IMAGE_ID or IMAGE_NAME>
删除镜像有时会显示某容器正在使用该镜像,不能删除,同时会提供对应的容器ID,那么只需要根据容器ID删除容器即可。
docker rm <CONTAINER_ID or CONTAINER_NAME>
使用docker中的mongodb
- 先拉取镜像
docker pull mongo
- 在镜像拉取之后,就可以创建容器了
docker run --name <container_name> -p 27017:27017 -v <my_own_folder>:/data/db -d mongo:tag
<container_name>
是自己自定义的容器名称-p 27017:27017
是表示将本机的27017端口号映射到容器中的mongo的27017端口号(mongo默认会将自己的27017端口号暴露出来)mongo:tag
其中mongo
表示镜像,tag
是我们对应的镜像版本,如果不加的话就是默认的lates
t.-v <my_own_folder>:/data/db
mongo服务启动会默认创建一个用于存储数据的数据库文件/data/db
,而该参数会把本地的<my_own_folder>
对应的文件夹映射到/data/db
,那么mongo中的数据库数据都会保存在本地的<my_own_folder>
文件中。
- 进入自己创建的容器
docker exec -it <container_name> mongo
然后就会进入mongo的命令行模式,就可以对mongo操作了。
注意:exec
命令是进入相应的容器,所以在exec
进入之前要保证容器存在且在运行,如果没有该容器就利用之前的docker run
命令来创建并运行一个容器,而如有容器已经存在但没有在运行,则要先将其运行起来:
docker start <container_name>
然后再用exec进入即可。
mongodb的认证约束
采用上述创建mongodb的容器默认是没有认证约束的,也就是说该mongo容器没有账号和密码,只要是知道地址和端口号就可以访问进入数据库。
我们就要对数据库添加认证约束:
- 在启动容器时添加
--auth
参数
docker run --name <container_name> -d mongo --auth
- 然后进入mongo容器后由mongo命令行添加用户名和密码:
docker exec -it <container_name> mongo admin
db.createUser({user:"username",pwd:"ini_password",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})