《 Docker实例三Docker安装MongoDB实例 》

前言

在前面一篇文章种,完成了 《 Docker安装MySQL实例 》,本篇将继续镜像安装教程,并完成Docker安装MongoDB实例。

Docker实例三Docker安装MongoDB实例

第一种:使用 docker pull 镜像名 拉取镜像

1、查询星级数大于30的MySQL镜像(注:星级数越高,越受欢迎的,默认在 Docker Hub 查询的),

输入命令 “ docker search -s 30 mongo ” ,查询内容如下:

[root@localhost ~]# docker search -s 30 mongo
Flag --stars has been deprecated, use --filter=stars=3 instead
NAME                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mongo                     MongoDB document databases provide high avai…   5365                [OK]
mongo-express             Web-based MongoDB admin interface, written w…   330                 [OK]
tutum/mongodb             MongoDB Docker image – listens in port 27017…   224                                     [OK]
mvertes/alpine-mongo      light MongoDB container                         88                                      [OK]
bitnami/mongodb           Bitnami MongoDB Docker Image                    73                                      [OK]
mongoclient/mongoclient   Official docker image for Mongoclient, featu…   58                                      [OK]

2、拉取第一个镜像,也是官方版的镜像,输入命令 “ docker pull mongo ”,默认拉取的为最新版本 latest ,内容如下:

[root@localhost ~]# docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
18d680d61657: Pull complete
0addb6fece63: Pull complete
78e58219b215: Pull complete
eb6959a66df2: Pull complete
1bb66a4db707: Pull complete
b18fa018e44b: Pull complete
5d0142bcb0df: Pull complete
db65733de31a: Pull complete
867fe12df2c5: Pull complete
29aa76034f8f: Pull complete
28e61706e03f: Pull complete
98ec6a7c0d50: Pull complete
c752faaa2e63: Pull complete
Digest: sha256:1fd611bd639a1bdffa5ddc3303c98dbebd63fdd7f95aaddf9819275220942fae
Status: Downloaded newer image for mongo:latest

3、拉取完成后,输入命令 “ docker images mongo”,可以在本地镜像列表里查到REPOSITORY为mongo的镜像,内容如下:

[root@localhost ~]# docker images mongo
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              ea6441073322        3 weeks ago         382MB

第二种:通过 Dockerfile 构建Docker镜像

1、新建Mongodb的Dockerfile文件存放目录,输入命令 “ mkdir -p /opt/dockerfile/mongo” ,并进入到目录下。

[root@localhost ~]# mkdir -p /opt/dockerfile/mongo
[root@localhost ~]# cd /opt/dockerfile/mongo/
[root@localhost mongo]#

2、创建dockerfile文件,输入命令 “ vi mongodockerfile ” ,并键入如下内容:

Ubuntu 版本:

# base 基础镜像
FROM ubuntu:xenial# 首先添加用户和组,以确保一致地分配他们的id
RUN groupadd -r mongodb && useradd -r -g mongodb mongodbRUN apt-get update \&& apt-get install -y --no-install-recommends \ca-certificates \jq \numactl \&& rm -rf /var/lib/apt/lists/*# grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases)
ENV GOSU_VERSION 1.10
# grab "js-yaml" for parsing mongod's YAML config files (https://github.com/nodeca/js-yaml/releases)
ENV JSYAML_VERSION 3.10.0RUN set -ex; \\apt-get update; \apt-get install -y --no-install-recommends \wget \; \rm -rf /var/lib/apt/lists/*; \\dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \export GNUPGHOME="$(mktemp -d)"; \gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \command -v gpgconf && gpgconf --kill all || :; \rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \chmod +x /usr/local/bin/gosu; \gosu nobody true; \\wget -O /js-yaml.js "https://github.com/nodeca/js-yaml/raw/${JSYAML_VERSION}/dist/js-yaml.js"; \
# TODO 这里有一些下载验证\apt-get purge -y --auto-remove wgetRUN mkdir /docker-entrypoint-initdb.dENV GPG_KEYS \
# pub   rsa4096 2018-04-18 [SC] [expires: 2023-04-17]
#       E162 F504 A20C DF15 827F  718D 4B7C 549A 058F 8B6B
# uid           [ unknown] MongoDB 4.2 Release Signing Key <packaging@mongodb.com>E162F504A20CDF15827F718D4B7C549A058F8B6B
# https://docs.mongodb.com/manual/tutorial/verify-mongodb-packages/#download-then-import-the-key-file
RUN set -ex; \export GNUPGHOME="$(mktemp -d)"; \for key in $GPG_KEYS; do \gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \done; \gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg; \command -v gpgconf && gpgconf --kill all || :; \rm -r "$GNUPGHOME"; \apt-key list# 允许构建时覆盖 (例如:使用MongoDB企业版来构建镜像)
# Options for MONGO_PACKAGE: mongodb-org OR mongodb-enterprise
# Options for MONGO_REPO: repo.mongodb.org OR repo.mongodb.com
# 例如:docker build --build-arg MONGO_PACKAGE=mongodb-enterprise --build-arg MONGO_REPO=repo.mongodb.com .
ARG MONGO_PACKAGE=mongodb-org-unstable
ARG MONGO_REPO=repo.mongodb.org
ENV MONGO_PACKAGE=${MONGO_PACKAGE} MONGO_REPO=${MONGO_REPO}ENV MONGO_MAJOR 4.1
ENV MONGO_VERSION 4.1.5RUN echo "deb http://$MONGO_REPO/apt/ubuntu xenial/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR multiverse" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"RUN set -x \&& apt-get update \&& apt-get install -y \${MONGO_PACKAGE}=$MONGO_VERSION \${MONGO_PACKAGE}-server=$MONGO_VERSION \${MONGO_PACKAGE}-shell=$MONGO_VERSION \${MONGO_PACKAGE}-mongos=$MONGO_VERSION \${MONGO_PACKAGE}-tools=$MONGO_VERSION \&& rm -rf /var/lib/apt/lists/* \&& rm -rf /var/lib/mongodb \&& mv /etc/mongod.conf /etc/mongod.conf.origRUN mkdir -p /data/db /data/configdb \&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdbCOPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]# 暴露 mongo 服务器端口
EXPOSE 27017
CMD ["mongod"]

WindowsServer 版本:

FROM microsoft/windowsservercore:1803SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]ENV MONGO_VERSION 4.1.9
ENV MONGO_DOWNLOAD_URL https://downloads.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.1.9-signed.msi
ENV MONGO_DOWNLOAD_SHA256 af71f53e1a1a92756b9c6c36c15cd6ec6be3cd292ef3636c8cd75d0216d0079fRUN Write-Host ('Downloading {0} ...' -f $env:MONGO_DOWNLOAD_URL); \[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \(New-Object System.Net.WebClient).DownloadFile($env:MONGO_DOWNLOAD_URL, 'mongo.msi'); \\Write-Host ('Verifying sha256 ({0}) ...' -f $env:MONGO_DOWNLOAD_SHA256); \if ((Get-FileHash mongo.msi -Algorithm sha256).Hash -ne $env:MONGO_DOWNLOAD_SHA256) { \Write-Host 'FAILED!'; \exit 1; \}; \\Write-Host 'Installing ...'; \
# https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/#install-mongodb-community-editionStart-Process msiexec -Wait \-ArgumentList @( \'/i', \'mongo.msi', \'/quiet', \'/qn', \'INSTALLLOCATION=C:\mongodb', \'ADDLOCAL=all' \); \$env:PATH = 'C:\mongodb\bin;' + $env:PATH; \[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \\Write-Host 'Verifying install ...'; \Write-Host '  mongo --version'; mongo --version; \Write-Host '  mongod --version'; mongod --version; \\Write-Host 'Removing ...'; \Remove-Item C:\mongodb\bin\*.pdb -Force; \Remove-Item C:\windows\installer\*.msi -Force; \Remove-Item mongo.msi -Force; \\Write-Host 'Complete.';VOLUME C:\\data\\db C:\\data\\configdb# TODO docker-entrypoint.ps1 ? (for "docker run <image> --flag --flag --flag")EXPOSE 27017
CMD ["mongod", "--bind_ip_all"]

3、通过 Dockerfile 的 docker build 构建一个 mongodb 镜像,这儿可以自定义镜像名,输入命令 “ docker build -f /opt/dockerfile/mongo/mongodockerfile -t huazai/db/mongo:v1.0 . ” 进行构建,部分构建内容如下:

[root@localhost mongo]# docker build -f /opt/dockerfile/mongo/mongodockerfile -t huazai/db/mongo:v1.0 .
Sending build context to Docker daemon  16.38kB
Step 1/22 : FROM ubuntu:xenial
xenial: Pulling from library/ubuntu
18d680d61657: Pull complete
0addb6fece63: Pull complete
78e58219b215: Pull complete
eb6959a66df2: Pull complete
Digest: sha256:76702ec53c5e7771ba3f2c4f6152c3796c142af2b3cb1a02fce66c697db24f12
Status: Downloaded newer image for ubuntu:xenial---> 4a689991aa24# 此处省去 N 行---> Running in e96c256bd975
Removing intermediate container e96c256bd975---> 9225772cec3a
Step 22/22 : CMD ["mongod"]---> Running in 476ef3e814ea
Removing intermediate container 476ef3e814ea---> 00eb8361cc1c
Successfully built 00eb8361cc1c
Successfully tagged huazai/db/mongo:v1.0

构建成功后,输入命令 “ docker images huazai/db/mongo  ” ,可以在本地的镜像列表种查找到方才构建 mongo 镜像,内容如下:

[root@localhost mongo]# docker images huazai/db/mongo
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
huazai/db/mongo     v1.0                00eb8361cc1c        About a minute ago   390MB

测试 Mongo 镜像

1、创建 Mongo 相关目录,后面用于数据转递与共享的容器数据卷,

输入命令 “ mkdir -p /opt/mongo/data ” ,内容如下:

[root@localhost mongo]# mkdir -p /opt/mongo/data
[root@localhost mongo]# cd /opt/mongo/
[root@localhost mongo]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec  6 02:09 data
[root@localhost mongo]#

目录说明:

data

启动mongo容器服务时,data目录将映射为mongo容器配置的 /data/db 的目录,以达到数据转递共享与数据存储的目的;

2、启动镜像,创建一个容器实例,输入命令 “ docker run -it -d -p 27017:27017 -v /opt/mongo/data:/data/db --privileged=true --name mongo01 镜像ID ” ,启动后会产生一个 ID ,内容如下:

[root@localhost data]# docker run -it -d -p 27017:27017 -v /opt/mongo/data:/data/db --privileged=true --name mongo01 00eb8361cc1c
d0301ae9af2fd703164824eb1bffe8ca6cddb6cba08c5214e059c0a3ef187cbe
[root@localhost data]#

3、连接 mongo 服务并操作,这儿只为测试通过 Dockerfile 构建的 mongo 服务是否可用,如果需要具体的关于 mongodb NoSQL方面的操作,请参考博主其它有关的详细描述,直接输入命令 “ docker exec -it mongo01 /bin/bash ” ,再连接到 mongo 服务,输入命令 “ mongo ”,连接上后,就可以对 mongo 服务进行操作了,内容如下:

[root@localhost data]# docker exec -it mongo01 /bin/bash
root@d0301ae9af2f:/# mongo
MongoDB shell version v4.1.5
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("e81895e9-c12a-4c53-86db-579b12cc5110") }
MongoDB server version: 4.1.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttp://docs.mongodb.org/
Questions? Try the support grouphttp://groups.google.com/group/mongodb-user
Server has startup warnings:
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten]
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten] ** NOTE: This is a development version (4.1.5) of MongoDB.
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten] **       Not recommended for production.
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten]
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-12-06T07:21:54.307+0000 I CONTROL  [initandlisten]
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten]
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten]
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-12-06T07:21:54.308+0000 I CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

4、最后再验证方才配置的数据的转递共享是否成功,进入到方才创建的目录 “ data ” ,如果出现如下内容,说明成功的:

[root@localhost mongo]# cd data/
[root@localhost data]# ll
total 244
-rw-------. 1 polkitd input 16384 Dec  6 02:22 collection-0-9124788741644741248.wt
-rw-------. 1 polkitd input 16384 Dec  6 02:22 collection-2-9124788741644741248.wt
-rw-------. 1 polkitd input 16384 Dec  6 02:26 collection-4-9124788741644741248.wt
drwx------. 2 polkitd input    71 Dec  6 02:36 diagnostic.data
-rw-------. 1 polkitd input 16384 Dec  6 02:22 index-1-9124788741644741248.wt
-rw-------. 1 polkitd input 16384 Dec  6 02:22 index-3-9124788741644741248.wt
-rw-------. 1 polkitd input 16384 Dec  6 02:26 index-5-9124788741644741248.wt
-rw-------. 1 polkitd input 16384 Dec  6 02:26 index-6-9124788741644741248.wt
drwx------. 2 polkitd input   110 Dec  6 02:21 journal
-rw-------. 1 polkitd input 16384 Dec  6 02:22 _mdb_catalog.wt
-rw-------. 1 polkitd input     2 Dec  6 02:21 mongod.lock
-rw-------. 1 polkitd input 32768 Dec  6 02:26 sizeStorer.wt
-rw-------. 1 polkitd input   114 Dec  6 02:21 storage.bson
-rw-------. 1 polkitd input    45 Dec  6 02:21 WiredTiger
-rw-------. 1 polkitd input  4096 Dec  6 02:21 WiredTigerLAS.wt
-rw-------. 1 polkitd input    21 Dec  6 02:21 WiredTiger.lock
-rw-------. 1 polkitd input  1065 Dec  6 02:26 WiredTiger.turtle
-rw-------. 1 polkitd input 61440 Dec  6 02:26 WiredTiger.wt
[root@localhost data]#

好了,关于 Docker系列(二十三)——Docker实例五Docker安装MongoDB实例 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者: 华    仔
联系作者: who.seek.me@java98k.vip
来        源: CSDN (Chinese Software Developer Network)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/84764328
版权声明: 本文为博主原创文章,请在转载时务必注明博文出处!

Docker系列(二十三)——Docker实例五Docker安装MongoDB实例相关推荐

  1. Docker系列二~自定义网桥

    Docker系列二 docker自定义网桥 查看本地网络 docker network ls #查看本地所有网络[root@localhost conf.d]# docker network ls N ...

  2. Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor

    Docker介绍及环境搭建参考: Docker系列一: docker介绍&&安装(含离线安装) Docker系列(二): 搭建docker镜像仓库-Nexus.Harbor Docke ...

  3. Reflex WMS入门系列二十三:几个库存相关的报表

    Reflex WMS入门系列二十三:几个库存相关的报表 Reflex WMS系统作为一个主流的仓库管理软件系统,自然需要对仓库里的库存有多个角度的报表功能.比如常见的slow-moving, agin ...

  4. Docker系列(二)-Dcoker的常用命令

    文章目录 帮助命令 镜像命令 查看本机镜像 搜索镜像 下载镜像 删除镜像 查看镜像的历史 容器命令 启动容器 查看运行容器 退出容器 删除容器 启动和停止容器 常用的其他命令 后台启动容器 查看日志 ...

  5. Docker系列 二. Docker 安装 Nginx

    Docker 安装 Nginx Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 . 1.查看可用的 Nginx 版本 访问 Ngin ...

  6. 电气器件系列二十三:压差开关

    简介 压差开关是一种特殊的控制开关,它是依据相互部件间的压力差值并依靠电信号进行信息传递控制开关闭合或打开的一类开关. 总的来说就是利用两条管道的压差来发出电讯号,当系列液管二端的压差升高(或降低)而 ...

  7. BizTalk开发系列(二十三) BizTalk性能指标参考

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 BizTalk项目目前比较少,使用的客户也不多.大多只知道BizTalk是一个不错 ...

  8. Redis系列二、redis的五种数据结构和相关指令之String

    redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set.sorted set.本节中将介绍Redis支持的主要数据结构中的st ...

  9. 【Python学习系列二十三】Scikit_Learn库降维方法(矩阵分解)-PCAFA

    1主成分分析PCA 1.1 精确PCA和似然估计 PCA基于最大方差的正交变量分解多维数据集.在scikit-learn库中,PCA的实现是先通过fit方法计算n维的特征值和特征向量,然后通过tran ...

最新文章

  1. 谁说被吃是鸡的宿命?这只鸡长了个价值三个诺奖的肿瘤
  2. nginx 入门配置
  3. openjudge-NOI 2.6-1759 最长上升子序列
  4. mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)
  5. 最近ゲームにはまってる。
  6. SQL的经典语句(太全了)
  7. JPA通用Dao类设计
  8. 04.Android之动画问题
  9. linux系统可以装win10吗,如何在Win10专业版中安装Linux系统?
  10. DIV+CSS专题:第一天 XHTML CSS基础知识
  11. 图画日记怎么画_画画日记(通用10篇)
  12. 卡片游戏 基础c语言试题
  13. linux中支持gb18030的输入法,教程:智能的陈巧五笔输入法linux v1.1最新版本
  14. 计算机应用软件弹窗消除,怎么去掉电脑弹窗广告?这几种方法教你轻松解决
  15. 计算机处理器怎么看 64,怎么查看电脑处理器是32还是64位
  16. 戴尔R730从U盘启动
  17. CHM 格式打开不显示网页
  18. python 二进制的数为啥带0b?,怎样去掉0b?
  19. Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线发射芯片
  20. virtualbox 鼠标无法从虚拟电脑移除该怎么处理

热门文章

  1. 答题小程序 服务器,答题小程序如何实现随机发题目
  2. 芯海科技2022数字芯片笔试题
  3. 引用类型作为函数的返回类型
  4. Android ViewFlipper 用例
  5. 艺赛旗(RPA) Python 科学计算:matplotlib (精华博文)
  6. Mapreduce入门--词频统计
  7. SpringBoot整合Thymeleaf+EasyExcel实现excel文件的读取并展示,附加swagger2配置(超详细示范!)
  8. SQL-Server数据库开发总结
  9. Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
  10. Centos7+LAMP