docke启动Mongodb,并启动功能认证,真实可靠

sudo docker run -d --name mongodb -p 27017:27017 -v 你的配置目录:/data/configdb -v 你的数据目录:/data/db mongo

这段命令相信会docker的同学来说应该不陌生,如果有不懂的同学,可以先学习相关知识。

记住上面是没有加 --auth 的,因为如果上面加了 --auth , 你后面进入容器内部,进行添加用户等操作 的时候,就需要认证,但是你是第一次启动,肯定是没有用户的,所以认证不了,你就操作不了,创建不了用户。

正确的做法:
就是执行上面的 docker run 命令后 , 这个时候记住,你是不需要权限认证的,直接进入容器内部,进入mongodb 里,创建用户。
在这里插入图片描述
这个时候,你虽然创建了用户,但是你仍然没有开启认证,因为你docker run 的时候没有指定 --auth
,所以这也是 docker 在执行力方面的一个缺点吧,有很多功能需要自己摸索。

重点来了
记住,先提醒一句,可以去dockerhub上面看看每个docker的作者,都会在DockerFile结尾指定 entrypoint.sh脚本的位置,这个entrypoint.sh脚本的作用其实就是配置相应镜像的脚本,mongodb当然也不例外:
在这里插入图片描述
如上图,就是mongodb DockerFile的一部分,可以看到DockerFile配置了我上面第一段命令的 mongodb的配置文件目录,数据目录。而这里最重要的就是 entrypoint.sh 的目录,在容器内部,你需要找到这个文件,并编辑它。但是容器内部是不能使用vi,vim等指令的,又一个但是你还记的我们上面doceker run 的参数不: -v 你的配置目录:/data/configdb -v 你的数据目录:/data/db 这两个位置是共享容器内部的位置的,所以你又需要把entrypoint.sh文件拷贝到 这两个目录的data/db目录下,一定要是这个,如果你拷到配置文件目录下,可能会出麻烦。

先整理一下思绪:我们开启了容器,并把我们相应的配置目录和数据目录挂载到了容器里,然后在容器的mongodb里创建了我们的角色,但是由于我们在开启容器的时候,没有指定 --auth 参数,所以即使创建了角色,也认证不了。于是我们需要编辑 entrypoint.sh 文件,但是容器内部没有vi,vim等命令,所以我们需要把entrypoint.sh 文件拷贝到宿主机和容器挂载的数据目录

然后我们退出容器,进入宿主机挂在的数据目录,编辑这个entrypoint.sh文件如下:

在exec gosu mongodb "$@"之前增加一行内容    set -- "$@" "--auth"

在这里插入图片描述
OK,此时我们就编辑完成了。然后我们需要重新进入容器内部,把这个 编辑完成的 entrypoint 文件,从共享目录直接移动到原目录,上面的那张图片上的位置,覆盖掉原来的entrypoint.sh文件。

大功告成,退出容器,重新启动

docker restart mongodb 就 欧了,重新进入容器,再操作试试,保证要你验证。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值