使用Docker在MongoDB上进行安装
因为参加了Docker的研讨会,所以我试着先在Docker上安装MongoDB,以便开始学习Docker。
环境:
* CentOS 7.0.1406 (核心)
* docker-1.3.2-4.el7.centos.x86_64
安装Docker
使用yum进行安装,然后使用systemctl命令启动。
# yum install docker
# systemctl start docker
安装MongoDB容器镜像。
MongoDB的容器映像已在Dockerhub上公开,因此可以使用docker pull命令从Dockerhub下载容器映像。
掉下来的容器映像名称是mongo。
# docker pull mongo
Trying to pull repository docker.io/mongo ...
5242d1368ac4: Download complete
21e4345e9035: Download complete
(中略)
c44083d34fb8: Download complete
Status: Downloaded newer image for docker.io/mongo:latest
安装了MongoDB的最新版本容器镜像。
创建并启动MongoDB容器
使用docker run命令创建并启动MongoDB的主体(mongod)。
# docker run --name some-mongo -d mongo
在中文中,可以将其翻译为:每个选项都是不同的。
–nameはコンテナのエイリアス指定
-dはバックグラウンド実行
最後にコンテナイメージであるmongoを指定
可以使用docker ps命令进行启动确认。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5eabc7ec23a4 mongo:latest "/entrypoint.sh mong 46 seconds ago Up 45 seconds 27017/tcp some-mongo
停止容器
# docker stop some-mongo
容器的第二次及以后的启动。
# docker start some-mongo
使用MongoDB客户端进行连接。
通常情况下,若要连接到MongoDB,我们会使用MongoDB客户端命令mongo。然而,由于MongoDB本身以容器镜像的形式安装,因此在本地环境中并不存在mongo命令。
因此,需要通过Docker来调用mongo命令。
# docker run -it --link some-mongo:mongo --rm mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
只需一个选项, 如下所示:
每个选项都不同。
-iと-tは対話するために必要
–rmは終わったらコンテナを消す(コマンドを一回打つためだけのコンテナなので)
–linkは既に起動しているmongodbコンテナと接続。別コンテナなので、こうしないと接続できない。
mongoでコンテナイメージを指定
最後に実行コマンドとしてsh -c ‘mongo xxx’を指定。これが実行される。
$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORTの部分はDockerで自動的に生成される環境変数でMongoDBのIPアドレスとポート番号を参照している(ちなみに私の環境では172.17.0.1:27017となっていた)。
/testはデータベース名。testというデータベースに接続している
进入容器内
# docker exec -it some-mongo bash
容器里面是什么样子的?
如果查看Mongo的Dockerfile,就会发现在Debian Linux上安装了MongoDB的Debian软件包。
在那里,进入容器并查看Debian软件包。
# docker exec -it some-mongo bash
root@5eabc7ec23a4:/# dpkg -L mongodb-org-server
(出力抜粋)
/usr/bin/mongod # 本体
/usr/share/man/man1/mongod.1.gz # マニュアル
/etc/mongod.conf # 設定ファイル
/etc/init.d/mongod # 起動スクリプト
顺便提一下,数据目录是/data/db。
这是我的感受。
嗯,我试着把MongoDB容器化成Docker来学习,但是非常简单。
只是,我觉得即使将MongoDB容器化也没有太大的好处。
因为MongoDB的安装包非常简单,只有一个二进制文件,安装也很容易,配置文件也很简单。
版本升级只需要替换一个二进制文件,而且还可以很快地回滚。
由于参与的角色太少,导致容器化所带来的好处很难被接受是其中之一。