Docker安裝MongoDB

  1. 上傳Mongo到宿主機,或者在宿主機中下載
  2. 編寫Dockerfile構建鏡像
  3. 編寫supervisor配置文件
  4. build和run

MongoDB安裝linux

# 下載Mongo
$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.0.7.tgz

# 解壓Mongo壓縮包
$ tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.0.7.tgz

# 重命名一下Mongo的安裝目錄
$ mv mongodb-linux-x86_64-ubuntu1404-3.0.7/ mongodb-3.0.7

# (不推薦下面的路徑直接創建在Docker虛擬機上,推薦使用volume掛載方式)
# 在宿主機上建立一個數據庫目錄存儲Mongo的數據文件
$ sudo mkdir -p /docker/mongo/data

# 在宿主機上建立一個日誌目錄存儲Mongo的Log文件
$ sudo mkdir -p /docker/mongo/log

# 在{MONGO_HOME}下建立一個Mongo啓動的配置文件
$ sudo touch mongodb.conf

############# mongodb.conf ################
port=30000
dbpath=/mongo/data
logpath=/mongo/log/mongodb.log
logappend=true
############# mongodb.conf ################

# 啓動mongo時,指定config配置文件
$ sudo ./mongod -f ../mongodb.conf

# 參考:
https://docs.mongodb.org/master/tutorial/install-mongodb-on-linux/
http://my.oschina.net/aarongo/blog/349061

Dockerfile文件git

############################################
# version : birdben/mongodb:v1
# desc : 當前版本安裝的mongodb
############################################
# 設置繼承自咱們建立的 tools 鏡像
FROM birdben/tools:v1

# 下面是一些建立者的基本信息
MAINTAINER birdben (191654006@163.com)

# 設置環境變量,全部操做都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

# 添加 supervisord 的配置文件,並複製配置文件到對應目錄下面。(supervisord.conf文件和Dockerfile文件在同一路徑)
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

# 設置 mongo 的環境變量,若讀者有其餘的環境變量須要設置,也能夠在這裏添加。
ENV MONGO_HOME /software/mongodb-3.0.7
ENV LC_ALL C

# 複製 mongodb-3.0.7 文件到鏡像中(mongodb-3.0.7 文件夾要和Dockerfile文件在同一路徑)
ADD mongodb-3.0.7 /software/mongodb-3.0.7

# VOLUME 選項是將本地的目錄掛在到容器中 此處要注意:當你運行-v <hostdir>:<Containerdir> 時要確保目錄內容相同不然會出現數據丟失
# 對應關係以下
# mongo:/docker/mongodb
VOLUME ["/mongodb"]

# 容器須要開放Mongo 30000端口
EXPOSE 30000

# 執行supervisord來同時執行多個命令,使用 supervisord 的可執行路徑啓動服務。
CMD ["/usr/bin/supervisord"]
  •  

Dockerfile源文件連接:github

https://github.com/birdben/birdDocker/blob/master/mongo/Dockerfilemongodb

supervisor配置文件內容docker

# 配置文件包含目錄和進程
# 第一段 supervsord 配置軟件自己,使用 nodaemon 參數來運行。
# 第二段包含要控制的 2 個服務。每一段包含一個服務的目錄和啓動這個服務的命令。

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:mongo]
# 注意這裏指定的mongodb.conf文件路徑,必須是絕對路徑
command=/software/mongodb-3.0.7/bin/mongod -f /mongodb/mongodb.conf

控制檯終端數據庫

# 構建鏡像
$ docker build -t="birdben/mongodb:v1" .
# 執行已經構件好的鏡像
$ docker run -p 9999:22 -p 30000:30000 -t -i -v /docker/mongodb:/mongodb "birdben/mongodb:v1"


# 能夠ssh遠程登陸,而後查看mongo的log是否有變化,而後就大功告成了
$ ssh root@10.211.55.4 -p 9999
$ cd /mongo/log
$ tailf mongodb.log

遇到問題ubuntu

# 若是遇到mongo啓動問題Failed global initialization: BadValue Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.
# 須要配置以下的環境變量

export LC_ALL=C
  •  

參考文章:app

相關文章
相關標籤/搜索