1、查找mongodb相关镜像

docker search mongo

找到相关的镜像进行拉取,如果不指定版本,默认下载最新的mongoDB。建议自己先查找需要那个版本后在进行拉取,因为mongoDB不同版本之间差距较大。

2、拉取镜像

这里拉取mongodb6.0

docker pull mongodb:6.0

拉取成功后,查看docker镜像

docker images

3、本地创建容器卷文件夹

首先在本地创建文件夹

D:\mongodb\conf
D:\mongodb\data
D:\mongodb\logs

进入conf文件夹创建mongod.conf文件

# 数据库文件存储位置
dbpath = /data/db
# log文件存储位置
logpath = /data/log/mongod.log
#pid运行目录
#pidfilepath = /var/run/mongodb/mongodb.pid
# 使用追加的方式写日志
logappend = true
#启用日志文件,默认启用
journal=true
#最大连接数
maxConns=2048
# 是否以守护进程方式运行
# fork = true
# 全部ip可以访问
bind_ip = 0.0.0.0
# 端口号
port = 27017
# 是否启用认证
auth = true
# 设置oplog的大小(MB)
oplogSize=1755

进入logs目录文件创建mongod.log文件

4、通过命令创建新容器

docker run -d --name mongodb -p 27017:27017 --privileged=true --restart=always 
-v D:/mongodb/data:/data/db
-v D:/mongodb/conf:/data/configdb
-v D:/mongodb/logs:/data/log/
-e MONGO_INITDB_ROOT_USERNAME=root
-e MONGO_INITDB_ROOT_PASSWORD=1234qwer mongo:6.0
-f /data/configdb/mongod.conf --auth

-d 后台运行

-p 映射端口

--privileged  以root 用户身份在容器内运行

--restart  自动重启容器

-v 容器卷

-e 设置环境

-f 指明配置文件路径 容器以容器内的配置文件启动

--auth mongo开启安全认证,需要账号密码才能访问

容器启动成功

5、查看mongo版本

进入容器实例

docker exec -it cfb571a9a7e4  /bin/bash

输入命令:

mongod -version

docker安装mongodb成功。

6、错误问题

上面我们使用docker安装的mongodb已经可以使用了,但是还有一个问题。如果重新启动容器,会发现容器启动不了。会报错:

{"t":{"$date":"2023-06-29T09:25:48.932+00:00"},"s":"I",  "c":"CONTROL",  "id":20698,   "ctx":"-","msg":"***** SERVER RESTARTED *****"}
{"t":{"$date":"2023-06-29T09:25:48.933+00:00"},"s":"I", "c":"NETWORK", "id":4915701, "ctx":"-","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInternalClient":true}}}
{"t":{"$date":"2023-06-29T09:25:48.935+00:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"-","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
{"t":{"$date":"2023-06-29T09:25:48.935+00:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
{"t":{"$date":"2023-06-29T09:25:48.937+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationDonorService","namespace":"config.tenantMigrationDonors"}}
{"t":{"$date":"2023-06-29T09:25:48.937+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationRecipientService","namespace":"config.tenantMigrationRecipients"}}
{"t":{"$date":"2023-06-29T09:25:48.937+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"ShardSplitDonorService","namespace":"config.tenantSplitDonors"}}
{"t":{"$date":"2023-06-29T09:25:48.937+00:00"},"s":"I", "c":"CONTROL", "id":5945603, "ctx":"main","msg":"Multi threading initialized"}
{"t":{"$date":"2023-06-29T09:25:48.938+00:00"},"s":"I", "c":"CONTROL", "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":1,"port":27017,"dbPath":"/data/db","architecture":"64-bit","host":"cfb571a9a7e4"}}
{"t":{"$date":"2023-06-29T09:25:48.939+00:00"},"s":"I", "c":"CONTROL", "id":23403, "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"6.0.6","gitVersion":"26b4851a412cc8b9b4a18cdb6cd0f9f642e06aa7","openSSLVersion":"OpenSSL 3.0.2 15 Mar 2022","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2204","distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2023-06-29T09:25:48.939+00:00"},"s":"I", "c":"CONTROL", "id":51765, "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version":"22.04"}}}
{"t":{"$date":"2023-06-29T09:25:48.939+00:00"},"s":"I", "c":"CONTROL", "id":21951, "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"config":"/data/configdb/mongod.conf","net":{"bindIp":"*","port":27017},"replication":{"oplogSizeMB":2048},"security":{"authorization":"enabled"},"storage":{"dbPath":"/data/db"},"systemLog":{"destination":"file","logAppend":true,"path":"/data/log/mongod.log"}}}}
{"t":{"$date":"2023-06-29T09:25:48.940+00:00"},"s":"E", "c":"NETWORK", "id":23024, "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock","error":"Operation not permitted"}}
{"t":{"$date":"2023-06-29T09:25:48.941+00:00"},"s":"F", "c":"ASSERT", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":40486,"file":"src/mongo/transport/transport_layer_asio.cpp","line":1126}}
{"t":{"$date":"2023-06-29T09:25:48.941+00:00"},"s":"F", "c":"ASSERT", "id":23092, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}

主要看这条日志:

":"E",  "c":"NETWORK",  "id":23024,   "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock","error":"Operation not permitted"}}

发现  /tmp/mongodb-27017.sock 没有操作权限,导致容器重新启动失败。

解决方法:

删除mongodb-27017.sock,重启mongo服务。

sudo rm /tmp/mongodb-27017.sock

因为使用的docker,容器没有运行进入不了容器,所以无法使用。

所以需要使用容器卷映射tmp 使mongodb-27017文件拥有相应权限

增加容器卷:

 -v D:/mongodb/tmp:/tmp

把之前的容器删除,重新启动一个新容器。由于之前使用了容器卷,所以启动新容器数据也不会消失。完整命令:

docker run -d --name mongodb -p 27017:27017 --privileged=true 
-v D:/mongodb/data:/data/db
-v D:/mongodb/conf:/data/configdb
-v D:/mongodb/logs:/data/log/
-v D:/mongodb/tmp:/tmp
-e MONGO_INITDB_ROOT_USERNAME=root
-e MONGO_INITDB_ROOT_PASSWORD=1234qwer
mongo:6.0
-f /data/configdb/mongod.conf --auth

启动容器。然后停止容器再次重新启动。发现没有报错问题解决。

docker下载mongodb镜像并启动容器的更多相关文章

  1. 【Docker学习之三】Docker查找拉取镜像、启动容器、容器使用

    环境 docker-ce-19.03.1-3.el7.x86_64 CentOS 7 一.查找.拉取镜像.启动容器1.查找镜像-docker search默认查找Docker Hub上的镜像,举例:D ...

  2. Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决

    Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools       # ifconfig apt ...

  3. 关于Docker官方CentOS镜像无法启动mysqld的总结

    很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动. 无法正常启动表现为两种情况: 1> 初始完数据库后,mysqld启动报错 2> syst ...

  4. docker 下载安装镜像

    docker安装成功后. 1.搜索镜像 # docker search java 可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker ...

  5. 使用 docker 拉取镜像和创建容器-nginx

    本文主要分享通过从docker  hub上获取nginx镜像 1.首先查找nginx镜像 [root@node1 ~]# docker search nginx NAME DESCRIPTION ST ...

  6. Docker下载mysql镜像

    1.使用命令查看mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL [OK] mariadb MariaDB [OK] mysql/ ...

  7. docker-构建建tomcat镜像并启动容器

    1.下载一个tomcat8,解压好改名为tomcat并配置端口为80,删除webapps下的默认的应用,修改tomcat/bin目录下脚本的权限,chmod +x *.sh 2.路径一般放在/usr/ ...

  8. Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令

    就这三步骤,下面的是实例不看也罢. apt-get update ###第一步一定要先执行这个更新下.不更新下面的安装命令会显示找不到网络包 //ifconfig apt install net-to ...

  9. docker使用非root用户启动容器出现“running exec setns process for init caused \"exit status 40\"": unknown”

    环境为centos7,linux内核版本为3.10 出现该问题的原因是内核3.10的bug,升级linux内核即可,升级办法如下,升级完成后重启系统,选择对应的内核版本启动即可. .导入key rpm ...

  10. docker下载java镜像,执行xxx.jar文件

    docker pull java:8u111

随机推荐

  1. java interface 介绍

    interface类似于class,只不过interface里的所有方法都是abstract抽象的,当一个非抽象的class实现(implements)一个接口interface时,必须实现接口中所有 ...

  2. pycharm—flask创建简单web项目

    1.系统 系统 版本 OS win 10 pycharm 专业版2022.3.1 2.引入flask包 pip install flask 3.项目目录展示.代码.浏览器访问 from flask i ...

  3. 《系列一》-- 5、xml配置文件解析之[自定义]命名空间[标签]的解析

    阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. Spring源码阅读系列--全局目录.md ...

  4. 混合类Mixins介绍

    介绍 混合类是封装了一些通用行为的基类,旨在重用代码.通常,混合类本身并没有什么用,仅扩展这种类也行不通 因为在大多数情况下,它都依赖于其它类中定义的方法和属性.通过多继承,可将混合类与其它类一起使用 ...

  5. 基于java的学生信息管理系统

    开发说明:使用数组集合存储临时数据,实现学生信息管理系统,实现的功能有管理员的注册.登陆.增加学生信息.删除学生信息.查询学生信息.修改学生信息.学生信息列表 登陆注册界面 系统首页界面 增加 删除 ...

  6. ASP.NET Core 跨域

    跨域常见问题: 1.发布到IIS上后跨域问题 解决方法 修改web.config文件 <system.webServer> <httpProtocol> <customH ...

  7. 合并区间(区间排序,vector的动态扩容的应用)

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入 ...

  8. 【Azure 应用服务】在App Service中新建WebJob时候遇见错误,不能成功创建新的工作任务

    问题描述 在Azure App Service界面上,添加新的Web Job(工作任务)时,一直添加失败.无详细错误提示,在App Service的Activity Logs(活动日志)中,根本没有添 ...

  9. 【Azure 云服务】Azure Cloud Service中的错误事件 Error Event(Defrag/Perflib) 解答

    问题描述 在Azure Cloud Service的实例中,收集到各种 Error Event 内容,本文针对所收集的三种Event进行解析. 1: This operation is not sup ...

  10. Android的BLE广播数据包解析---Android系列, 蓝牙技术(含BLE)

    一.引言 理解和分析这个数据包结构(这里面也涉及广播间隔时间的设置,设备广播数据间隔设置长了,会影响设备被发现的效率:设置短时,又响应功耗). 我们所说的BLE设备,其实是有区分有两种角色 Centr ...