制作mongodb的Docker镜像文件

在上一章《Docker下,极速体验mongodb》中,我们快速搭建了mongodb并在控制台做了基本的体验,当时用的镜像是官方发布在hub.docker.com上的镜像,今天我们来尝试一下自己制作一个mongodb的Docker镜像,在制作的过程中顺便了解如何在linux下安装mongodb。

下载mongodb安装文件

首先要下载下载mongodb安装文件,去官网下载,地址:https://www.mongodb.com/download-center#community

下载后找个目录解压此文件,得到文件夹mongodb-linux-x86_64-ubuntu1604-3.4.9;

创建Dockerfile文件

新建一个Dockerfile文件,位置和mongodb-linux-x86_64-ubuntu1604-3.4.9在同一个目录下,Dockerfile的内容如下所示,每一行的详细功能请看注释:

# Docker image of hbase cluster
# VERSION 0.0.1
# Author: bolingcavalry

#基础镜像使用ubuntu16.04
FROM ubuntu:16.04

#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>

#定义工作目录
ENV WORK_PATH /usr/local/

#定义mongodb文件夹名称
ENV MONGODB_PACKAGE_NAME mongodb-linux-x86_64-ubuntu1604-3.4.9

#把mongodb安装包从本地电脑复制到工作目录
COPY ./$MONGODB_PACKAGE_NAME $WORK_PATH/mongodb

#创建数据库文件目录
RUN mkdir -p /data/db

#更新
RUN apt-get update

#把libssl.so.1.0.0装上,否则无法运行mongodb
RUN apt-get install -y libssl1.0.0 libssl-dev

#把mongodb的bin目录加入到PATH环境变量中
ENV PATH=$WORK_PATH/mongodb/bin:$PATH

#mongodb的web端口
EXPOSE 28017

#连接端口
EXPOSE 27017

#启动服务,--rest参数表示开启web服务
CMD ["mongod", "--rest"]

构建镜像

打开控制台,在Dockerfile文件所在目录执行如下命令,即可构建镜像文件,镜像名bolingcavalry/ubuntu16-mongodb349,tag是0.0.1:

docker build -t bolingcavalry/ubuntu16-mongodb349:0.0.1 .

执行apt-get update和apt-get install两个命令有点耗时,构建成功的输出大致如下图所示:

创建一个容器验证

执行以下命令可以基于刚刚构建的镜像创建一个容器:

docker run --name mongo001 -idt -p 28017:28017 bolingcavalry/ubuntu16-mongodb349:0.0.1

再执行docker exec -it mongo001 /bin/bash进入容器,执行mongo命令进入mongodb的控制台,可以如前一章那样去验证和体验mongodb的功能,如下图:

web服务

还记得Dockerfile文件的最后几行么:

#mongodb的web端口
EXPOSE 28017

#连接端口
EXPOSE 27017

#启动服务,--rest参数表示开启web服务
CMD ["mongod", "--rest"]

如上所示,首先将28017端口暴露出来了,我们在docker run的时候也通过-p参数做了端口映射,并且Dockerfile的CMD命令还增加了一个参数”–rest”,有了这个参数,就开启了mongodb的web服务,在当前电脑上打开浏览器输入localhost:28017,可以看到如下图所示和页面:

至此,我们本地制作mongodb的Docker镜像的实战就完成了,有hub.docker.com账号的读者也可以通过docker push命令将本地的镜像推送到hub.docerk.com网站上去,以后随时可以pull到;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

Https全揭秘系列-Https简述

Https全揭秘系列 - Https简述 最近一段时间负责框架的Https相关开发和后续维护,从一无所知到略有了解,写一个Https系列文章,讲一讲自己的经验和...

1918
来自专栏linux运维学习

Linux学习第三十四篇:rsync通过服务同步,Linux系统日志,screen工具

rsync通过服务同步 rsync 通过服务的方式同步(在主机上配置好rsync的各种应用) 要编辑配置文件 /etc/rsyncd.conf rsy...

1809
来自专栏极客生活

centos7 安装 debuginfo

阿里云的centos机器和镜像都没有提供debuginfo的源,而且默认开通的centos并没有提供yum的repo配置文件。这样的话很多的性能调试工具,比如s...

501
来自专栏deepcc

nodejs服务器anywhere简介

2744
来自专栏LeoXu的博客

在 vmware 上的 Ubuntu 虚拟机上安装 Tomcat、ssh、ftp服务

1、在vmware上的虚拟机和宿主机网络互通联调     选择了 NAT 模式,发现宿主机 ping 不通虚拟机,但是虚拟机可以 ping 通宿主机。   ...

782
来自专栏FreeBuf

Redis未授权访问漏洞的重现与利用

前言: 最近配置openvas的时候安装了redis,听说曾经曝出过一个未授权访问漏洞,便找了一下相关资料想自己动手复现一下漏洞的利用过程,当然所有的攻击性操作...

20610
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令十二

有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的

483
来自专栏Django Scrapy

linux 便捷使用防火墙控制端口访问

使用 ufw 工具 ubuntu 安装 apt-get install ufw 使用方法 1 启用 sudo ufw enable sudo ufw de...

3464
来自专栏我是攻城师

Spring-Boot1.4.0项目部署问题小记

2725
来自专栏Java成神之路

Java企业微信开发_11_异常:java.net.UnknownHostException: qyapi.weixin.qq.com

1、查看你的服务器能否ping通外网,不过不行说明你的网络出了问题.     (我的情况是客户的应用服务器只能内网访问,所以是网络出问题了)

591

扫码关注云+社区