dockerfile创建mongodb4.0.8

前言:

        用dockerfile创建mongodb4.0.8镜像。

一、准备工作:

        1、下载mongodb4.0.8文件包到/root/mongodb4.0.8目录里

[root@dingzhi ~]# mkdir mongodb4.0.8/
[root@dingzhi ~]# cd mongodb4.0.8/
[root@dingzhi mongodb4.0.8]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.8.tgz

#注意文件大小为100M左右,查看大小是否符合,是否下载错误

(如果下载不到的话,在mongodb官网(https://www.mongodb.com/download-center/community)下载最新版本)

         2、 编辑好自定义的mongodb.conf文件

[root@dingzhi mongodb4.0.8]# vi mongodb.conf   #编辑内容如下
dbpath=/usr/local/mongodb/data/db  #数据文件存放目录
logpath=/usr/local/mongodb/logs/mongodb.log #日志存放目录
port=27017 #端口
#fork=true #fork=true以守护程序的方式启用,即在后台运行。这里注释后就是前台方式启用
logappend=true
maxConns=5000
storageEngine = mmapv1

 

二、创建redis4.0.8的dockerfile文件

[root@dingzhi mongodb4.0.8]# vi dockerfile  #编辑内容如下

FROM centos:latest
MAINTAINER https://blog.csdn.net/lituxiu
ENV TIME_ZOME Asia/Shanghai
ARG WJ="mongodb-linux-x86_64-rhel70-4.0.8"
#https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.8.tgz

ADD $WJ.tgz /usr/local/
RUN mkdir -p /usr/local/mongodb \
        &&   cp -r /usr/local/$WJ/*  /usr/local/mongodb/  \
        && echo "export MONGODB_HOME=/usr/local/mongodb " >>/etc/profile \
        && echo "export PATH=$PATH:$MONGODB_HOME/bin" >>/etc/profile \
        && source /etc/profile \
 
        && cd /usr/local/mongodb \
        && mkdir -p data/db \
        && chmod -R 777 data/db \
        && mkdir logs \
        && touch mongodb.log  \

        && echo "${TIME_ZOME}" > /etc/timezone \
        && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \
        && rm -rf /usr/local/$WJ/
    
#WORKDIR /usr/local/mongodb/bin  #这里要靠近下面的ENTRYPOINT,否则报错找不到./mogod命令
RUN mkdir /usr/local/mongodb/etc
COPY mongodb.conf /usr/local/mongodb/etc/
EXPOSE 27017
#启动
WORKDIR /usr/local/mongodb/bin/
ENTRYPOINT ./mongod -f ../etc/mongodb.conf

三、创建mongodb4.0.8镜像

[root@dingzhi mongodb4.0.8]# docker build -t mongodb4.0.8:latest ./
..... #一大堆创建的信息
 ---> Running in 831739f81ba2
 ---> a3d747f35f6b
Removing intermediate container 831739f81ba2
Successfully built a3d747f35f6b

[root@dingzhi mongodb4.0.8]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongodb4.0.8        latest              a3d747f35f6b        38 minutes ago      782 MB
redis4.0.10         latest              bbcb83519ab6        10 hours ago        314 MB
tomcat8.5.40        latest              f06aacf399c4        15 hours ago        622 MB
jdk8.0.211          latest              c598103b2c55        2 days ago          608 MB
nginx1.15.7         latest              4b05c87dcbec        2 days ago          302 MB
php7.2.16           latest              3428fd528787        2 days ago          627 MB
docker.io/mysql     5.7                 98455b9624a9        3 weeks ago         372 MB
docker.io/centos    latest              9f38484d220f        5 weeks ago         202 MB

#以上查看到mongodb4.0.8的镜像id前4位为a3d7

四、测试验证环境

       创建宿主主机本地挂载的目录

[root@dingzhi ~]# mkdir -p  /data/mongodb/{etc,db}
[root@dingzhi ~]# ls /data/mongodb/
db  etc
[root@dingzhi ~]# cp /root/mongodb4.0.8/mongodb.conf  /data/mongodb/etc/

      后台启动容器并挂载容器数据和配置的目录到本地

[root@dingzhi ~]# docker run --restart=always -p 27017:27017 -v /data/mongodb/etc/:/usr/local/mongodb/etc -v /data/mongodb/db/:/usr/local/mongodb/data/db/  --name mongodb -d a3d7
22c261fd80f66222d706f066edb96076d4e39ea8ae50095848d340ffd9fde947

     进入容器,设置密码并创建数据

[root@dingzhi ~]# docker exec -it mongodb /bin/bash
[root@22c261fd80f6 bin]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.9  2.5 1501348 97284 ?       Ssl  16:38   0:00 ./mongod -f ../etc/mongodb.conf
root         24  0.3  0.0  11820  1880 ?        Ss   16:39   0:00 /bin/bash
root         37  0.0  0.0  51740  1732 ?        R+   16:39   0:00 ps aux
[root@22c261fd80f6 bin]# ./mongo
...
>
#按顺序输入下列四行
use admin
db.createUser({user:'admin',pwd:'admin',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})

use uni_pb
db.createUser({user:'root',pwd:'kd1@213dF!da',roles:[{role:'dbOwner',db:'uni_pb'}]})

#再在uni_pb库里创建数据
db  #看下当前库是否在uni_pb库里
use uni_pb
db.c1.save({name:"xiaoming",age:18,sex:"boy"})
db.c1.find()
exit

         退出并删除当前容器,重新别别一个容器,挂载在相同的宿主主机目录,验证库的用户和密码、库是否还存在

#停止并删除当前的容器
[root@dingzhi ~]# docker kill $(docker ps -q)
3a5edfda1ddc
[root@dingzhi ~]# docker rm -f  $(docker ps -qa)
3a5edfda1ddc
[root@dingzhi ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

#重开新的容器,并挂载的宿主的目录,是否继承了此前的数据
[root@dingzhi ~]# docker run --restart=always -p 27017:27017 -v /data/mongodb/etc/:/usr/local/mongodb/etc -v /data/mongodb/db/:/usr/local/mongodb/data/db/  --name test -d a3d7
344d297f28898c70148e11241a828f51c948feba7278be2cb0e6e38fd2ece975

[root@dingzhi ~]# docker exec -it test /bin/bash  #进入新开的名叫test的mongodb容器
[root@344d297f2889 bin]# ./mongo    #启动mongodb数据库
> db
test
> use uni_pb
switched to db uni_pb
> db.auth('root','kd1@213dF!da')
1        #这里返回1是代表库的用户和密码正确
> show tables
c1
> db.c1.find()
{ "_id" : ObjectId("5cb98c51ab790be43df50ee7"), "name" : "xiaoming", "age" : 18, "sex" : "boy" }

#以上查询到的mongodb数据依然在新开的容器里也可以继承着

用dockerfile创建mongodb4.0.8镜像并挂载宿主目录环境整体过程,配置完毕了!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值