GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

DockerMongoDBコンテナーをデプロイおよび管理する方法

MongoDBは、高いパフォーマンスと優れた柔軟性を提供する、人気のあるオープンソースのドキュメントデータベースです。しかし、プロジェクト用にMongoDBデータベースをコンテナー化しようとしましたか?そうでない場合は、ご馳走になります!

このチュートリアルでは、Dockerを使用してMongoDBを効果的にデプロイ、保護、および管理する方法を学習します。読んで、DockerMongoDBコンテナーのデプロイのマスターになりましょう!

前提条件

このチュートリアルは、実践的なデモンストレーションで構成されています。フォローするには、次のものがあることを確認してください。

  • Ubuntuマシン–このチュートリアルではUbuntu20.04LTSを使用します
  • sudoを持つユーザー 許可
  • Docker –このチュートリアルではDocker20.10.9を使用します

DockerMongoDBイメージのダウンロード

Docker MongoDBコンテナーをデプロイおよび管理する前に、MongoDBコンテナーをローカルで実行できるように、まずDockerHubからMongoDBイメージをダウンロードする必要があります。

dockerを実行します 以下のコマンドを使用して、MongoDB Community Edition(CE)イメージをダウンロードします( pull mongo )、DockerHubがホストしている。執筆時点でのこの画像の最新バージョンは4.2です。

sudo docker pull mongo

以下に示すように、コマンドは画像の最新バージョンを自動的にプルし、最新としてタグ付けします 。

次に、 docker imagesを実行します サーバーで利用可能なすべての画像を一覧表示するには、以下のコマンドを使用してください。

sudo docker images

以下に、最新のタグが付けられたMongoDBイメージを示します。 。

DockerMongoDBコンテナーのデプロイ

ダウンロードしたMongoDBイメージから、MongoDBコンテナーをデプロイできるようになりました。 MongoDBコンテナをmongo実行可能ファイルで初期化し、データディレクトリを作成します。次に、Dockerコンテナのデータ領域とホストマシン間のマッピングを定義します。

1. mkdirを実行します 以下のコマンドを使用して、 mongodataという名前のデータディレクトリを作成します MongoDBデータベースとログを保存します。

sudo mkdir -p /mongodata

2.次に、 docker runを実行します 以下のコマンドを使用して、 mymongoという名前のコンテナを作成します 。さらに、コンテナはインタラクティブな疑似TTY( -it )で開始されます )、コンテナの起動時に出力を表示する必要がある場合。

最後に、新しく作成されたディレクトリ mongodata バインドされています( -v )内部ディレクトリ / data / db -d オプションは、コンテナをデタッチモードで開始するため、バックグラウンドプロセスとして実行され、作成時にコンソール出力を返します。

システムは自動的に/data / dbを作成します コンテナを実行して、コンテナに加えた変更のデータを格納するときのディレクトリ。このディレクトリは読み取り専用と同様のモードで実行され、ホストシステムでの永続的なデータストレージを有効にします。

sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo

コマンドが正常に完了すると、次のような出力が表示されます。

3.最後に、 docker psを実行します 以下のコマンドを使用して、コンテナのIDを識別し、そのステータスを確認します。 docker ps コマンドは、現在実行中のコンテナに関するすべての情報を表示します。

docker ps コマンドは通常のpsに相当します Linuxのコマンド。

sudo docker ps

以下に示す出力では、ポートを確認できます。 着信接続をリッスンするためにコンテナに割り当てられたすべてのポートを一覧表示するセクション。

この例では、ポート 27017 ホストにマップされます。以下の出力は、 localhost:27017を介してこのコンテナー上のMongoDBインスタンスにアクセスできることを示しています。 ホストから。

mymongoのログファイルを見たいと思うかもしれません 何か問題が発生したときにmongoデータベース/インスタンスで何が起こったかを判別するためのコンテナー。その場合は、 docker logsを実行します 次のようなコマンド: sudo docker logs docker-container docker-containerを置き換えます Dockerコンテナ名の名前を使用します。

DockerMongoDBコンテナーをBashシェルに接続する

Docker MongoDBコンテナーをデプロイしたばかりですが、どのように管理しますか?これを行うには、 docker execを使用してDockerコンテナをBashシェルにアタッチします。 最初にコマンドを実行します。

コンテナーは現在デタッチモードで実行されている(バックグラウンドで実行されている)ため、コンテナーをBashシェルにアタッチすることは非常に重要です。また、コンテナがバックグラウンドで実行されている場合、コンテナは入力も表示出力も受け取りません。

docker execを実行します コンテナをアタッチするには、以下のコマンド( mymongo )Bashシェルに。

sudo docker exec -it mymongo bash

コマンドが完了すると、プロンプトは次のようなものに変わります。一意の英数字番号( 77782fa95314 )はコンテナIDです。

コンテナIDは、名前の競合を回避し、ホスト間のコンテナを効果的に識別するために不可欠です。したがって、それらを変更しないようにしてください。

次に、 mongoを実行します コンテナ(mymongo)のMongoDBシェルにログインするための引数なしのコマンド。 MongoDBシェルは、mongoクエリ/コマンドを実行する場所です。

コンテナに入ったら、 sudoなしで任意のコマンドを実行できます コンテナ内のrootユーザーになっているため、プレフィックス。コンテナに加えたすべての変更は、ホストシステムに影響を与えません。

mongo

以下に示すプロンプトを見ると、MongoDBシェルにいることがわかります。

MongoDBシェルで使用可能なすべてのコマンドを表示する場合は、 helpを実行します。 以下に示すように、コマンド。

管理MongoDBユーザーの作成

Dockerコンテナー内にMongoDBサーバーをデプロイした後、管理用MongoDBユーザーを作成します。管理ユーザーは、MongoDBサーバーに接続してデータベースを管理できます。

1. MongoDBシェルに再度ログインし、 useを実行します 以下のコマンドを使用して、最初に adminに切り替えます データベース。そうすることで、管理ユーザーにデータベースを管理するための適切な権限が与えられます。

use admin

次のコードをコピーしてMongoDBプロンプトに貼り付け、管理ユーザーを作成します。

以下のコードはdb.createUser()を使用しています 管理者の役割を持つユーザーを作成する方法。ユーザー名( user )とパスワード( pwd )以下はハードコードされており、好みに応じて変更できます。

# Create an administrative user
db.createUser(
{
	# Sets the username for the administrative user
	user: "ata",
	# Sets the password for the administrative user
	pwd: "password123",
	# Sets the roles for the administrative user
	roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

コードが機能する場合は、MongoDBプロンプトに次のようなメッセージが表示されます。

3. quit()を実行します 以下のクエリを実行して、MongoDBシェルを終了します。

quit()

4.最後に、次の mongoを実行します 作成した管理ユーザーをテストするコマンド( ata )MongoDBサーバーに接続します。プロンプトが表示されたら、管理ユーザーのパスワードを入力します。

mongo -u ata -p --authenticationDatabase admin

以下に示すように、サーバーに正常に接続すると、MongoDBサーバーはMongoDBサーバーのバージョンを出力します。

おそらく、管理ユーザーをさらにテストしたいでしょう。その場合は、以下のコマンドを実行して、データベース内のすべてのユーザーを表示します。

use admin
show users

以下に、作成した管理ユーザーがリストに含まれていることを確認できます。

MongoDBデータベースの作成

Docker MongoDBコンテナーの管理は、データベースを作成しないと完了しません。新しいMongoDBデータベースを作成し、MongoDBシェルを介してデータを保存します。

1. Dockerコンテナー内の対話型セッション内から、 show dbsを実行します サーバー内のすべてのデータベースを一覧表示するには、以下のコマンドを実行します。

show dbs

以下に、管理データベース、構成データベース、およびローカルデータベースを示します。 MongoDBシェルは、デフォルトですべてのMongoDBサーバーにこれらのデータベースを作成します。

2.次に、 useを実行します 以下のコマンドを使用して、新しいデータベースを作成します。 を置き換えます 選択したデータベース名を使用します。ただし、この例では、データベースの名前は linuxです。 。

使用 queryは、現在のデータベースを、存在する場合は指定したデータベースに切り替えます。そうでない場合は、 use クエリは新しいデータベースを作成し、自動的にそれに切り替えます。

use <database_name>

3. show dbsを再実行します 以前に行ったように(ステップ1)コマンドを実行して、作成したデータベースが存在するかどうかを確認します。

show dbs

それでも、新しく作成されたデータベース(Linux)がリストに表示されませんか? MongoDBは、初めてデータをデータベースに保存するときにのみデータベースを構築します。データは、コレクションまたはドキュメントの形式である場合があります。

4.次に、以下のコードをコピーしてMongoDBシェルに貼り付け、 Enterを押します。 。

以下のコードは、 linux_versionという名前の新しいコレクションを作成します 、お好みの名前に変更できます。コレクションには、キーと値のペアの形式のデータが含まれています。

# Using insertOne method to insert data
db.linux_version.insertOne(
	# Key:value pairs to insert to the database
	{ "debian" : "11",
	"ubuntu" : "20.04",
	"rocky linux" : "8.4",
	"alma linux" : "8"
	}
)

以下の出力では、 linux_versionを確認できます。 コレクションが作成され、 ObjectIDが付属します 。

5. show collectionsを実行します コレクションのリストを表示し、新しいコレクションが linux_versionかどうかを確認するコマンド 存在します。

show collections

linux_versionが正常に作成されたことを以下に示します。 コレクション。

6.最後に、以下のコマンドを実行して、 linux_versionに挿入したデータを表示および確認します。 コレクションは正しいです。 pretty()メソッドを使用すると、人間が読める形式でデータを表示できます。

db.linux_version.find().pretty()

データベース内のデータを変更する場合は、 Update()を使用してください メソッド。

以下の出力は非常に読みやすい形式であることがわかります。

DockerMongoDBコンテナーの再起動

これで、DockerMongoDBコンテナーが正常に実行されました。しかし、コンテナを使用できなくなった場合、またはコンテナが機能しなくなった場合はどうなりますか?いくつかのDockerコマンドは、MongoDB Dockerコンテナーを停止、再起動、さらには削除するのに役立ちます。

1. docker psを実行します 以下のコマンドを実行して、実行中のすべてのコンテナを一覧表示します。

sudo docker ps

以下に示すように、停止、再起動、または削除するコンテナーの名前とコンテナーIDをメモします。

2.次に、 docker stopのいずれかを実行します 実行中のMongoDBコンテナーを停止するには、以下のコマンドを使用します。

sudo docker stop mymongo
sudo docker stop container-ID

3. docker psを再実行します 以前に行ったようにコマンド(ステップ1)を実行して、コンテナーがシャットダウンしたかどうかを確認します。

sudo docker ps

以下に示すように、コンテナは実行中のコンテナのリストに含まれていません。これは、コンテナが正常に停止したことを示しています。

4.次に、 docker startのいずれかを実行します コンテナを再起動する場合は、以下のコマンドを使用してください。

sudo docker start mymongo
sudo docker start container-ID

5.最後に、 docker psを再実行します コンテナが実行されているかどうかを確認するコマンド。

sudo docker ps

おそらく、コンテナをこれ以上使用する必要はありません。その場合は、最初にコンテナを停止して、 rmを実行する必要があります 次のように、コンテナを削除するコマンド: sudo docker container rm mongodb 。前の例と同様に、 mongodbを置き換えます コンテナ名またはコンテナIDのいずれかを使用します。

結論

このチュートリアルでは、データベースを作成してデータを格納する管理者ユーザーを作成することにより、DockerMongoDBコンテナーをデプロイおよび管理する方法を学習しました。 Dockerイメージをクリーンに保つ必要がなくなったコンテナーを停止、再起動、および削除できることに気づきました。

Dockerを使用したMongoDBのデプロイと管理は、コンテナー化テクノロジーを活用してオーバーヘッドを削減するための最初のステップです。この最初のステップを使用して、MongoDBをさらに詳しく調べ、Docker MongoDBコンテナーがプロジェクトにどのように役立つかを確認してみませんか?


Docker
  1. DockerをインストールしてLAMPスタックをデプロイする方法

  2. コンテナ化とは何ですか?DockerとKubernetesとはどのように関連していますか?

  3. PostgreSQLをDockerコンテナとしてデプロイする方法

  1. LinodeにDockerを使用してnginxコンテナをデプロイする方法

  2. Docker コンテナーをバックアップおよび復元する方法

  3. Docker コンテナを一時停止および再開する方法

  1. DockerコンテナにPostgreSQLをデプロイする方法

  2. DockerでRedisをデプロイして実行する方法

  3. コンテナと Dockerfile から Docker イメージを作成する方法