DockerでMongoDBをコンテナとしてデプロイする手順を徹底解説
最も扱いやすいNoSQLデータベースの一つであるMongoDB®には、さまざまなデプロイ方法が用意されています。この記事では、Docker®を使用してMongoDBをコンテナとしてデプロイし、シェルクライアントからそのコンテナを操作する方法を解説します。
はじめに
パソコンやサーバーにDockerをインストールしたら、以下の手順に従ってMongoDBをDockerコンテナとしてデプロイしていきます。
- 最新版または特定バージョンのMongoDB Dockerイメージをダウンロードする
- MongoDBのインスタンスをコンテナとしてデプロイする
- 基本的なシェル操作でMongoDB Dockerコンテナとやり取りする
MongoDB Dockerイメージのダウンロード
Dockerがインストールされていれば、Docker HubのコンテナレジストリからMongoDBイメージを取得できます。ダウンロードの際は、使用する予定の具体的なバージョン(例:mongo:4.0.4)を明示的に指定することをおすすめします。バージョン指定を省略することも可能ですが、その場合は常に最新版が取得されるため、Mongo側で随時アップデートが行われると動作に一貫性がなくなる恐れがあります。
docker imagesコマンドを実行すると、サーバー上で利用可能なイメージの一覧が表示されます。ここでは、タグ4.0.4のMongoDBイメージが利用可能になっていることが確認できます。
以下のコマンドでMongoDBイメージをダウンロードし、利用可能なイメージ一覧を表示しましょう。
# docker pull mongo:4.0.4
# docker images
MongoDBインスタンスをコンテナとしてデプロイする
コンテナはデタッチドモード(-d)で起動します。コンテナのストレージは揮発的(エフェメラル)であるため、データを保持するためにボリューム(-v)をマウントし、ローカルパス/data/db(コンテナ内部のディレクトリ)を指定します。これにより、コンテナを停止・削除しても、ホスト側の/data/dbパス上にデータが保存されたままになります。
コマンドでは--nameオプションでコンテナ名を指定し、その後にDockerイメージ名とタグを続けます。ここではタグにmongo:4.0.4を使用しています。コマンド実行後、コンテナIDを含む文字列が返され、docker psコマンドで起動中のコンテナ一覧を確認できます。
# docker run -d -v /data/db:/data/db --name mymongo mongo:4.0.4
# docker ps
シェルでMongoDB Dockerコンテナを操作する
稼働中のMongoDB環境を活用するには、シェルクライアントを使ってデータベースとやり取りします。
コンテナはデタッチドモードで起動しているため、インタラクティブなターミナルから接続します。以下のコマンドでmymongoという名前のデプロイに接続し、bashシェルを起動します。
# docker exec -it mymongo bash
次に、以下のコマンドでMongoDBシェルクライアントを起動します。
# mongo
MongoDBシェルクライアントからは、公式ドキュメントに記載されているすべての機能を利用できます。たとえば、次のコマンドでインスタンス内に存在するデータベースの一覧を確認できます。
> show dbs
まとめ
この記事では、Dockerを使用してMongoDBコンテナを作成し、ホストシステムからコンテナへストレージボリュームをマウントする方法を紹介しました。さらに、シェル経由でMongoDB Dockerコンテナとのやり取りを開始する手順も解説しました。ここで紹介したのはDockerコンテナ内でMongoDBインスタンスを実行する基本的なデモですが、同じMongoDBイメージを使えば任意の数のコンテナを構築できます。それらのコンテナを組み合わせてレプリカセットを構成するなど、堅牢なコンテナ化アプリケーションを構築するためにも幅広く活用できます。
本記事が、MongoDBインスタンスを数分で立ち上げてすぐに使い始めるためのきっかけとなれば幸いです。
ご意見やご質問がある場合は、フィードバックタブをご利用ください。チャットでのお問い合わせも可能です。
当社のデータベースサービスについて詳しく知りたい方は、ぜひチェックしてみてください。
-
MongoDBで未使用のインデックスを検索する方法 ― $indexStats活用の6つのポイント
MongoDBはバージョン3.2以降、すべてのインデックスに対して使用状況の統計情報を追跡しています。これらの統計へアクセスするために、MongoDBは$indexStatsアグリゲーションパイプラインステージを提供しています。この記事では、MongoDBで未使用のインデックスを特定する際に押さえておきたい6つのポイントを解説します。例えば、次のコマンドを実行すると、コレクション「test.foo」のインデックス統計を取得できます。db.foo.aggregate( [ { $indexStats: { } } ] )参考: $indexStatsに関する公式ドキュメント$indexStats
-
Docker Desktop レビュー ― コンテナ管理を快適にする直感的GUIフロントエンドの実力とは?
私が好むのは、直感的に操作できるソフトウェアです。マニュアルなしでも使いこなせて、万が一ドキュメントを確認する必要があるときも、必ず求めている答えが見つかるような製品。これまでの経験から言えば、Docker関連のツールはまさにその領域に該当すると言えます。 そんな中、最近「Docker Desktop」という新しいDockerツールに出会いました。これはDockerコンテナ管理のためのGUIで、本来ならコマンドラインからDockerエンジンを使って行う作業を、快適なフロントエンドから実行できるようにするものです。かなり興味深そうなので、早速詳しく見ていきましょう。 インストールと初期設定 ま