dockerではmongodbがすでに提供されている。
手順はこちらにある。
https://techsparx.com/software-development/docker/damp/mongodb.html
まずはリポジトリからmongodbのイメージを取得する。
$ docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
3b37166ec614: Pull complete
504facff238f: Pull complete|
eabf5629c48a: Pull complete
0f89e09a524d: Pull complete
Digest: sha256:66d58bd625a758ce537931ba5193fd0df3878548fbabce2012c96a584be96ce7
Status: Downloaded newer image for mongo:latest
次にmongodbを実行する。こんな感じでたくさんメッセージが出てくる。
$ docker run –name mongo01 mongo
2018-10-03T09:56:14.636+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify –sslDisabledProtocols ‘none’
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=1e2e6413a0de
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] db version v4.0.2
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] git version: fc1573ba18aee42f97a3bb13b67af7d837826b47
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] allocator: tcmalloc
2018-10-03T09:56:14.640+0000 I CONTROL [initandlisten] modules: none
mongodbが立ち上がるとこのcommand lineでは入力を受け付けなくなる。別のコマンドラインを立ち上げて、起動を確認する。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e2e6413a0de mongo “docker-entrypoint.s…” About a minute ago Up About a minute 27017/tcp mon go01
ではmongodbにアクセスしてみる。
$ docker exec -it mongo01 bash
root@1e2e6413a0de:/#root@1e2e6413a0de:/# mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
Welcome to the MongoDB shell.
For interactive help, type “help”.
|
>
mongodbにデータを書き込んでみる。
db.foo.find()
> db.foo.save({a:1});
WriteResult({ “nInserted” : 1 })
> db.foo.find()
{ “_id” : ObjectId(“5bb493a480c267e29d70a3ce”), “a” : 1 }
さてこのmongodbに外部アプリケーションからアクセスできるようにする。
$ docker network create mnet
90bc85a317421157cdc9871ea24459d0ddf788730fc59d06c4d63c9082f89458$ docker network inspect mnet
[
{
“Name”: “mnet”,
“Id”: “90bc85a317421157cdc9871ea24459d0ddf788730fc59d06c4d63c9082f89458”,
“Created”: “2018-10-03T10:03:26.6821793Z”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “172.18.0.0/16”,
“Gateway”: “172.18.0.1”
}
]
},
さて今度はmongo01が別のアプリケーションから接続できるよう、起動しなおす。
まずは現在のmongo01を停止、削除する。
$ docker stop mongo01
$ docker rm mongo01
mnetを使ってmongo01を起動する。
$ docker run –name mongo01 –net mnet mongo
別のコマンドラインからリモートでmongo01に接続する。
$ docker run -it –rm –net mnet mongo sh -c “exec mongo –host mongo01”
MongoDB shell version v4.0.2