微信小程序商城制作,wordpress加载优化,小米发布会2021时间表,做网站服务器e30、背景介绍
项目中使用MongoDB了#xff0c;服务器挂掉#xff0c;自己在本地搭一个试试。
1、版本选择
首先有社区版和和商业版。我选的是社区版。链接#xff1a;https://hub.docker.com/r/mongodb/mongodb-community-server/tags
1.1、标签选择
看到标签有两个大类…0、背景介绍
项目中使用MongoDB了服务器挂掉自己在本地搭一个试试。
1、版本选择
首先有社区版和和商业版。我选的是社区版。链接https://hub.docker.com/r/mongodb/mongodb-community-server/tags
1.1、标签选择
看到标签有两个大类一个是Ubuntu一个是ubi8 查了一下这个指的是镜像的基础镜像操作系统出处。ubi8是红帽出的一个基础镜像鉴于ubi8体积小一点点捏着鼻子选了这个。个人还是比较偏爱Ubuntu的 docker pull mongodb/mongodb-community-server:7.0.0-ubi8
2、安装
2.1、命令
#创建挂载卷
#If you want to persist the data on your local machine, you can mount a volume using the -v argument.
mkdir -p /usr/local/db/mongodb/data
chmod 777 /usr/local/db/mongodb/data
mkdir -p /usr/local/db/mongodb/configdb
chmod 777 /usr/local/db/mongodb/configdb
#拉取镜像
docker pull mongodb/mongodb-community-server:7.0.0-ubi8
#启动镜像
docker run -itd --restart always --name mongodb7 -p 37018:27017 -e MONGO_INITDB_ROOT_USERNAME**** -e MONGO_INITDB_ROOT_PASSWORD**** -v /usr/local/db/mongodb/data:/data/db mongodb/mongodb-community-server:7.0.0-ubi8
如注释
2.1.1、创建挂载卷 第一个命令【mkdir /usr/local/db/mongodb/data】创建数据映射目录后续等启动后再看看配置的存储目录之后再部署的时候把配置项也映射出来。 第二个命令【chmod 777 /usr/local/db/mongodb/data】授权否则启动的时候报错。见异常处理
2.1.2、拉取镜像 第五行命令【docker pull mongodb/mongodb-community-server:7.0.0-ubi8】从hub.docker.com拉取镜像。速度可能有点慢
2.1.3、启动容器 第六行启动一个名为【mongodb7 】的容器。 -itd指后台运行 --restart always 指启动失败/宿主机重启后容器自动启动好处是服务器重启时不用手动启容器缺点是容器异常无法启动时会不停的重启因此使用该参数创建容器后需要检查容器是否已经正常启动 -p 指端口映射宿主机端口:容器内端口 -e指的是环境变量****指代的是用户名、密码 -v是挂载的目录将容器内的目录映射到宿主机的物理目录用于数据的持久化即使容器被销毁数据仍在宿主机上存储。 拉取镜像的过程有点坎坷不知道也懒得配国内镜像。嫌弃慢的可以找国内镜像源把docker的源换一下即可。
3、补充
官方页面 https://www.mongodb.com/compatibility/docker 原来启容器的时候可以指定设置root权限的用户名密码 To initialize your MongoDB with a root user, you can use the environment variables MONGO_INITDB_ROOT_USERNAME and MONGO_INITDB_ROOT_PASSWORD. These environment variables will create a user with root permissions with the specified user name and password. If you want to use the mongoexport tool to export an existing collection to a .json file, you can use the command from a separate MongoDB container. You will need to mount a volume to be able to access the resulting JSON file. 想要使用mongo导出json功能需要启动容器时映射临时文件。
docker run -it -v $(pwd):/tmp mongodb/mongodb-community-server:$MONGODB_VERSION mongoexport --collectionCOLLECTION --out/tmp/COLLECTION.json mongodb://username:passwordclusterURL/database4、异常处理
4.1、无法启动容器 Could not init database
部署时发现一旦挂载卷就无法启动容器命令如下
docker run -itd --name mongotest02 -p 37018:27017 -v /usr/local/db/mongodb/data:/data/db mongodb/mongodb-community-server:7.0.0-ubi8查看容器状态docker ps -a |grep mongo 显示的不是up说明容器没有启动成功
查看容器日志docker logs mongodb7 提示是配置错误子进程执行失败不能初始化数据库
4.2、解决方法
提示不能初始化数据库想到可能配置有问题。但是经过对比后发现配置目录是空的所以猜测是挂载卷权限不够容器启动时不能在映射的目录创建文件因此给目录授权。授权最好按标准来别学我都搞777容易埋坑
chmod 777 /usr/local/db/mongodb/data授权完毕后执行启动容器命令就可用了。
5、参考文档
https://www.mongodb.com/compatibility/docker https://catalog.redhat.com/software/containers/ubi8/ubi/5c359854d70cc534b3a3784e