Docker に MongoDB コンテナを立ち上げる

May 18, 2024, 6:00 AM

Docker に MongoDB コンテナを立ち上げる

microAI のシステムでは MongoDB を使っています。今日は、開発環境用に MongoDB をDockerで立ち上げていきます。

ネットワークを作る

まだネットワークを作っていない場合は、作っておきます。
ここでは、microai-network という名前で作ります。

コマンド書式

$ docker network create {{ネットワーク名}}

実行

$ docker network create microai-network
a523ba5a027405f5d340e0038a59cbdbd7583ab5f4810c9f7b6c1318d58564ea

Docker Pull

MongoDBのイメージを pull します。
$ docker pull mongo

コンテナ作成&起動

コマンド書式

$ docker run --name {{コンテナ名}} --network {{ネットワーク名}} --network-alias {{エイリアス名}} -v {{ボリューム名}}:/data/db -e MONGO_INITDB_ROOT_USERNAME={{ユーザー名}} -e MONGO_INITDB_ROOT_PASSWORD={{パスワード}} -d {{イメージ名}} -p 27017:27017

実行

$ docker run --name microai-mongodb --network microai-network --network-alias mongodb.microai.svc.cluster.local -v microai-mongodb:/data/db -e MONGO_INITDB_ROOT_USERNAME=microai -e MONGO_INITDB_ROOT_PASSWORD=xxxxxx -p 27017:27017 -d mongo
aef5a95bbb3765db11c171d74b56424a744021fb7c09af827db96e4718468836

ネットワークの確認

コマンド書式

$ docker inspect -f '{{ json .NetworkSettings }}' {{コンテナ名}} | jq

実行

$ docker inspect -f '{{ json .NetworkSettings }}' microai-mongodb | jq
{
"Bridge": "",
"SandboxID": "f26b52f374a23afa7fa3d93032bd5f6679cb61f5da71d24da44c0f270bcc39c4",
"SandboxKey": "/var/run/docker/netns/f26b52f374a2",
"Ports": {
"27017/tcp": null
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"microai-network": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"microai-mongodb"
],
"MacAddress": "02:42:ac:13:00:02",
"NetworkID": "a523ba5a027405f5d340e0038a59cbdbd7583ab5f4810c9f7b6c1318d58564ea",
"EndpointID": "da7537b63cd244cb0d91c77fc5f07813ee85ac0e1d6e99b44cfd38b17da63491",
"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DriverOpts": null,
"DNSNames": [
"microai-mongodb",
"400b7039681d"
]
}
}
}
うまく設定できているようです。

余談

立ち上げた後ログインできないことがあったが、
error connecting to host: failed to connect to mongodb://microai-mongodb/: connection() error occurred during connection handshake: auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.

このとき、一度、コンテナを削除し、
$ docker volume rm microai-mongodb
として、一度、ボリュームを削除したあと、再度構築し直したところ、正しく動いてくれました。
Raspberry Pi に 4inch モニターを付けてサーバーを監視するRaspberry Pi に 4inch モニターを付けてサーバーを監視する
Docker 上で動いている MongoDB からダンプを取得する