MongoDBは、JSONのようなドキュメントとスキーマを利用したオープンソースのNoSQLデータベースであり、迅速な反復型開発をサポートします。そのスケールアウトアーキテクチャは、アジャイル手法を使用して迅速に移動するアプリケーション開発者に人気があります。アジャイルコミュニティ内で人気があるため、DockerでMongoDBを使用することは、継続的インテグレーションと開発のための優れたアプローチです。 (CI / CD)ワークフロー。
始める前に
このガイドの例を完了するには、最初にDockerがインストールされたLinodeをセットアップして保護します。これは、Docker Marketplaceアプリを利用するか、手動でインストールすることで実現できます。両方のアプローチの手順を以下に示します。
このガイドは、コマンドラインインターフェースに慣れていることを前提としています。 (CLI)Unixライクなシステムで、それを使用してプログラムを操作します。
Dockerを使用してLinodeをセットアップする
DockerMarketplaceアプリ
Docker Marketplaceアプリを使用して、安全で更新されたLinodeをすばやくセットアップできます。手順については、MarketplaceアプリでDockerをデプロイする方法に関するガイドを参照してください。このガイドでは、Dockerオプションを使用してDockerMarketplaceアプリをデプロイすることをお勧めします。
- Linode用に作成される限定的なsudoユーザー
- 制限付きsudoユーザーのパスワード
- Linodeへのアクセスに使用される制限付きsudoユーザーSSH公開鍵
- SSH経由のルートアクセスを無効にしますか? (はい)
手動インストール
-
スタートガイドをよく理解し、Linodeを更新するための手順を完了してください。
-
サーバーの保護のセクションを完了して、標準のユーザーアカウントを作成し、SSHアクセスを強化し、不要なネットワークサービスを削除します。
-
UbuntuとDebianにDockerをインストールして使用する方法に関するガイドの手順に従って、LinodeにDockerをインストールします。
Dockerのインストールを確認する
DockerがLinodeにインストールされていることを確認します:
docker --version
次のような出力が期待できます:
Docker version 20.10.8, build 3967b7d
注 このガイドは、root以外のユーザーを対象としています。昇格された特権を必要とするコマンドには、接頭辞として
sudo
が付けられます 。sudo
に慣れていない場合 コマンドについては、ユーザーとグループのガイドにアクセスしてください。すべての構成ファイルは、昇格された特権で編集する必要があります。
sudo
を含めることを忘れないでください テキストエディタを実行する前に。
MongoDBDockerコンテナをインストールする方法
Dockerは、MongoDBイメージを非常に簡単に作成できるようにします。これは、MongoDBイメージがDockerHubで公式に維持されているバージョンを保持しているためです。インストールするには:
-
Docker HubからMongoDBイメージをダウンロードしてインストールします:
sudo docker pull mongo
画像のダウンロード時の出力は、次のようになります。
Using default tag: latest latest: Pulling from library/mongo 16ec32c2132b: Pull complete 6335cf672677: Pull complete cbc70ccc8ebe: Pull complete 0d1a3c6bd417: Pull complete 960f3b9b27d3: Pull complete aff995a136b4: Pull complete 4249be7550a8: Pull complete cc105ff5aa3c: Pull complete 82819807d07a: Pull complete 81447d2c233f: Pull complete Digest: sha256:54d24682d00278f64bf21ff62b7ee62b59dae50f65139831a884b345922b0f8a Status: Downloaded newer image for mongo:latest docker.io/library/mongo:latest
注 このコマンドは、デフォルトで最新バージョンをプルします(出力の最初の行に示されているように)。特定のバージョンをプルするには、そのバージョンのタグをコマンドに追加します。たとえば、MongoDB 4.4.6をインストールするには、 docker pull mongo:4.4.6
と入力します。 。 -
イメージがインストールされていることを確認します:
sudo docker images
出力は次のようになります。
REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest 07630e791de3 2 weeks ago 449MB
-
mongo
を使用してコンテナを作成します システム上で引き続きインタラクティブになるように、デタッチモードのイメージ:sudo docker run --name mongo_example -d mongo
-
コンテナが実行されていることを確認します:
sudo docker ps
出力は次のようになります。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f88d00b9e78 mongo "docker-entrypoint.s…" 4 seconds ago Up 4 seconds 27017/tcp mongo_example
MongoDBは現在Dockerコンテナとして実行されています。
コンテナでMongoDBにログインする方法
-
コンテナ内でbashプロンプトを取得するには、次のように入力します。
sudo docker exec -it mongo_example bash
-
コンテナのコマンドプロンプトが表示されたら、
mongosh
と入力します シェル:mongosh
mongosh
から シェルを使用すると、データベースを使用してクエリと操作を直接テストできます。
注 レガシーの mongo
シェルはMongoDBv5.0で非推奨になりましたが、mongosh
の代わりに引き続きアクセスできます。 。
DockerコンテナーでMongoDBを構成する方法
MongoDBの構成の詳細については、MongoDBのマニュアルを参照してください。ただし、mongod
(MongoDBのプライマリデーモン)フラグは通常、MongoDBを構成するために設定され、docker run
コマンドは、mongod
を渡すように設計されています フラグ。
たとえば、スクリプトエンジンをオフにするには、次のようにコマンドの最後にフラグを追加します。
sudo docker run --name mongo_example2 -d mongo --noscripting
別の例として、スクリプトエンジンをオフにしてIPv6をオンにするには、次のように入力します。
sudo docker run --name mongo_example3 -d mongo --noscripting --ipv6
DockerコンテナからMongoDBデータを保存する方法
MongoDBはDockerコンテナで実行されているため、終了時にデータは保持されません(コンテナ自体の/ data / dbディレクトリにデータが保存されるため)。 MongoDBデータを永続化する必要がある場合は、Dockerボリュームを作成してマウントするか、ホストシステムからディレクトリをマウントする必要があります。
DockerボリュームをMongoDBコンテナーに追加する
Dockerに精通している場合は、コンテナーが使用するボリュームの作成と追加は簡単です。
-
次のように入力して、データが存在するDockerボリュームを作成します。
sudo docker volume create mongo_volume
-
次に、
docker run
を作成します ボリュームをコンテナーに接続し、それを/data/db
にマップするコマンド 次のように入力してコンテナディレクトリ:sudo docker run -it -v mongo_volume:/data/db --name mongo_example4 -d mongo
MongoDBDockerコンテナへのホストシステムディレクトリのマウント
データを永続化してDockerの外部のデータにアクセスする場合は、ホストシステムのディレクトリを使用できます。
ホストシステムディレクトリをマウントするには:
-
次のように入力して、システムのルートレベルにディレクトリを作成します(使用するディレクトリがない場合)。
sudo mkdir -p /mongo_data_directory
-
次に、
docker run
を実行します ディレクトリをマウントして/data/db
にマップするコマンド 次のように入力します:sudo docker run -it -v /mongo_data_directory:/data/db --name mongo_example5 -d mongo
さらに読む
DockerでMongoDBを使用する方法を学ぶことは、CI/CDワークフローと迅速な反復型開発に不可欠です。 Docker HubでDockerのMongoDB情報の一部を継続することは、この記事の優れたコンパニオンです。
mongod
の詳細については docker run
で渡されるオプション 、mongod
を確認してください MongoDBマニュアルのMongoDBパッケージコンポーネントセクション。
また、MongoDB Enterpriseへのアップグレードを計画している場合は、mongod
の手順について、MongoDBマニュアルのDockerを使用したMongoDBEnterpriseのインストールを参照してください。 。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- DockerHub上のMongoDB