システムにMariaDBをインストールする場合は、何も壊さないように、MariaDBをシステムの他の部分から分離することをお勧めします。確かに、仮想マシンを使用することはできますが、システム全体を別のシステムの上にインストールする必要があるため、多くのリソースが必要になります。では、MariaDB用のDockerをデプロイしてみませんか?
ハードウェアが限られていて問題がない場合は、Dockerが役立ちます。 Dockerは軽量の仮想化ソリューションです。また、このチュートリアルでは、リソースをあまり使用せずに、Dockerコンテナ内にMariaDBサーバーインストール用の本番Dockerをデプロイする方法を学習します。
読み進めて、リソースを二度と無駄にしないでください!
前提条件
このチュートリアルは、実践的なデモンストレーションになります。フォローする場合は、次のものがあることを確認してください。
- Linuxマシン–このデモはUbuntu 20.04 LTSを使用していますが、どのLinuxディストリビューションでも機能します。
- Dockerがマシンにインストールされています。
- sudo権限を持つroot以外のユーザー。
MariaDBDockerイメージの操作
マシンでMariaDBの操作を開始する最良の方法は、MariaDBの公式Dockerイメージを使用することです。このイメージには、MariaDBの最新の安定バージョンのインストールと、コンテナーの管理に役立ついくつかのスクリプトが含まれています。
1. apt update
を実行します システムが最新であることを確認するには、以下のコマンドを実行してください。このコマンドは、Ubuntuのリポジトリから最新のパッケージリストをフェッチし、利用可能なパッケージをインストールします。
sudo apt update -y
2.次に、systemctl
を実行します 以下のコマンドでdocker
を起動します サービス。
sudo systemctl start docker
Dockerサービスを開始しても、出力は提供されません。ただし、Dockerが実行されていないときにdocker関連のコマンドを実行すると、次のエラーが発生します。
3. docker status
を実行します 以下のコマンドを使用して、docker
サービスが実行されています。
sudo service docker status
以下に、Dockerサービスがアクティブ(実行中)であることがわかります。
4.最後に、gpasswd
を実行します 以下のコマンドを使用して、現在のユーザーを docker に追加します グループ。そうすることで、ユーザーはdocker
を実行できます。 コマンド。
sudo gpasswd -a "${USER}" docker
現在のユーザーをdockerに追加します groupは、dockerコマンドを実行するときに次のエラーからあなたを救います。
5.以下のdocker search
を実行します MariaDBイメージを検索するコマンド。このコマンドは、Docker Hub(公式リポジトリセット)でmariadb
に一致するイメージを検索します 結果を返します。
sudo docker search mariadb
MariaDBのインストールに使用するイメージを確認します。このデモでは、手入れが行き届いているため、mariadbという名前の公式画像を使用しています。
OFFICIAL列は、画像が公式のものである場合、OKステータスを示します。画像のステータスがOKでない場合、画像はコミュニティ開発者によって提供されています。その場合、画像に問題がある場合は開発者に連絡する必要があります。
6.次に、docker pull
を実行します (ステップ5で)選択したイメージをDockerリポジトリからダウンロードするコマンド。このコマンドはダウンロードします(pull
)公式リポジトリから選択した画像をローカルマシンに保存します。
sudo docker pull mariadb
コマンドが完了すると、以下に示すように、サーバー上に最新の安定バージョンのMariaDBイメージが表示されます。
以前のバージョンをインストールする場合は、そのイメージで使用可能なタグを使用できます。 に移動します 画像タグ/秒 以下に示すように、dockerhubの列ですべてのバージョンを表示してから、docker pullコマンドを実行し、正確なバージョンを指定します。 sudo docker pull mariadb:10.2
7.最後に、docker images
を実行します サーバーに存在するすべての画像を一覧表示するコマンド。この時点で、サーバー上に有効なMariaDBDockerイメージが存在するはずです。
sudo docker images
以下に、mariadbが最新のタグが付いたDockerイメージの名前であることがわかります。
ローカルMariaDBサーバーを実行するためのMariaDBコンテナーの作成
サーバー上にMariaDBイメージがあるので、そのイメージを使用してコンテナーを実行できます。コンテナは、オペレーティングシステム上で実行される、分離された、リソース制御された、ポータブルなランタイム環境です。
最初に新しいopt/ mariadb / backupを作成する必要があります このデモで作成するバックアップファイルを保存するサーバー上のディレクトリ。何か問題が発生した場合に変更を加える前に、本番環境でデータをバックアップすることが重要です。
コンテナの内部ボリュームを変更すると、その変更がマップされたホストディレクトリにコピーされます。したがって、すべてのコンテナデータのバックアップコピーを保持するには、ローカルサーバーにボリュームを作成します。
1.以下のコマンドを実行して、opt/mariadb/backup
を作成します ディレクトリ。 -p
オプションは、このディレクトリを作成する前に親ディレクトリが存在することを確認します。
パス内の親ディレクトリのいずれかが存在しない場合、コマンドは失敗します。
sudo mkdir -p opt/mariadb/backup
2.次に、docker run
を実行します 以下のコマンドを使用して、mariadb
からDockerコンテナを作成します 画像。このコマンドは以下を実行します:
- マップ(
-v
)MariaDBデータを保持するデフォルトのディレクトリ(/var/lib/mysql
)ホストディレクトリのDockerコンテナ(/opt/mariadb/backup
。
- MariaDB環境変数を宣言します(
-e
)MYSQL_ROOT_PASSWORD
MariaDBサーバーのルートパスワードを保持します。必ずata123
を置き換えてください 安全なパスワードを使用します。
- Dockerにデタッチモードでコンテナを起動するように指示します(
-d
)、したがって、コンテナはバックグラウンドで実行されます。そうすることで、現在のセッションを終了し、このコンテナがバックグラウンドで実行されている間も作業を続行できます。そうでない場合は、空白のプロンプトが表示され、実行中のコンテナを強制終了する必要があります。
- コンテナの名前を指定します(
--name mariadbata
)作成します。mariadbata
を置き換えることができます 一意の優先名を使用します。
- デフォルトのMariaDBポート3306をホストマシンに公開します(
-p 3306:3306
)(MariaDBサービスがクライアント接続をリッスンする場所)。本番サーバーの場合、デフォルトのポートを本番ポートにマップします。ただし、3306
を置き換えることはできます 他の本番ポート番号と一緒に。
sudo docker run --name mariadbata -p 3306:3306 -v /opt/mariadb/backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ata123 -d mariadb
この時点で、コンテナーが作成され、バックグラウンドで実行されますが、確信が持てないことはありません。したがって、次のステップでコンテナを確認します。
3. docker ps
を実行します Dockerコンテナがアクティブかどうかを確認するコマンド。
sudo docker ps
以下に、mariadbataコンテナが7分前から稼働しており、すべてのホストインターフェイスのポート3306でリッスンしていることがわかります。コンテナのID(3a7fa779b559)も確認できます。
この一意のIDを使用して、コンテナーへの接続、コンテナーのリスト、コンテナーの停止、またはコンテナーの削除を行うことができます。
4.次に、docker exec
を実行します 以下のコマンドを使用して、mariadbata
内のMariaDBサーバーのバージョンを確認します。 容器。
sudo docker exec -it mariadbata mysql -V
執筆時点では、以下に示すように、mariadbの最新バージョンは10.6.5であり、バージョンが異なる場合があります。 MariaDBはMySQLのフォークであるため、Dockerはmysqlクライアントをデフォルトクライアントとして使用して、以下に示すMariaDBサービスと対話しました。
5.以下のコマンドを実行して、MariaDBシェル(/bin/bash
)に入ります。 )。
sudo docker exec -it mariadbata /bin/bash
以下に示すように、プロンプトがUbuntuシェルからMariaDBシェルに変わります。
手順3で見たコンテナID(3a7fa779b559)の下に表示されます。プロンプトにコンテナIDが表示されている場合は、現在、mariadbataコンテナ内にいることを示しています。
コンテナ内では、このコンテナのrootユーザーであるため、sudoプレフィックスを使用して任意のコマンドを実行できます。
たとえば、以下のapt updateコマンドを実行して、sudoプレフィックスなしでコンテナ内のパッケージデータベースを更新できます。
apt update -y
6.最後に、exit
を実行します MariaDBシェルを終了し、Ubuntuホストシェルに戻るコマンド。
exit
ホストターミナルからMariaDBシェルにアクセスする
ホストにMariaDBクライアントをインストールすることにより、ホスト端末から直接MariaDBシェルにアクセスすることもできます。そうすることは、毎回コンテナシェルに切り替えたくない状況で役立ちます。
1. apt install
を実行します 以下のコマンドを使用して、MariaDBクライアントをUbuntuホストにインストールします。
sudo apt install -y mariadb-client
2.次に、docker inspect
を実行します 実行中のコンテナのIPアドレスを見つけるには、以下のコマンドを実行してください。
sudo docker inspect container-name | grep IPAddress
3.次に、mysql
を実行します 以下のコマンドを使用して、ホストからデータベースインスタンスに接続します(-h
)ユーザー名(root
)とパスワード(-p
)。 host_ip
を忘れずに置き換えてください 実行中のDockerコンテナのIPアドレスを使用します。
sudo mysql -u root -p -h host_ip
4.以前に設定したパスワードを入力します( ata123 )ステップ2でプロンプトが表示されると、以下に示すように、MariaDBクライアントプロンプトが表示されます。
その後、MariaDBサーバーで実行する必要のあるSQLコードを実行できます。
5.最後に、ls
を実行します 以下のコマンドでバックアップファイルを一覧表示します(opt/mariadb/backup
)MariaDBコンテナの。
ls -l opt/mariadb/backup
以下に同様のファイルのリストが表示されます。出力は、mariadbataコンテナのバックアップが正常に作成されたことを示しています。必要に応じて、ファイルをホスト上の別の場所にコピーできます。
コンテナの停止と削除
おそらく、RAMまたはCPUリソースを解放したいでしょう。その場合は、docker stop
を実行してコンテナを停止できます。 コマンドを実行し、コンテナIDまたはコンテナ名を指定します。
1.以下のコマンドのいずれかを実行して、特定のコンテナーを停止します。
# Stops Container by Container Name (mariadbata)
sudo docker stop mariadbata
# Stops Container by Container ID (3a7fa779b559)
sudo docker stop 3a7fa779b559
この時点で、コンテナは停止しますが、ホスト上に残り、データは残ります。
2.次に、docker ps
を実行します 以下のコマンドですべてを一覧表示します(-a
)コンテナ。
docker ps -a
以下に示すように、コンテナは引き続き表示されますが、終了状態にあります。これは、コンテナが停止していることを示します。
3.最後に、以下のコマンドを実行して削除します(rm
)停止したコンテナ(mariadbata
)。コンテナを削除する機能は、Dockerイメージが要件を満たしていない場合や、最初からやり直したい場合に便利です。
docker rmコマンドでコンテナを削除する前に、まずコンテナを停止する必要があることに注意してください。
sudo docker rm mariadbata
リソースを節約するためにデータボリュームを含むコンテナ全体を削除する場合は、以下のようなsudodockerコマンドで-vオプションを追加します。
sudo docker rm -v mariadbata
次に、以下のdocker psコマンドを再実行して、すべてのコンテナーを一覧表示し、コンテナーが完全に削除されたことを確認します。
docker ps -a
以下に示すように、 mariadbata コンテナはすべてのデータとともに削除されます。
結論
このチュートリアルでは、UbuntuホストマシンでMariaDBDockerコンテナを作成する方法を学びました。また、データボリュームコンテナを使用してDockerコンテナの永続ストレージを作成し、コンテナデータをバックアップする方法も学びました。
この時点で、Ubuntuで独自のMariaDBDockerコンテナを作成および管理できるようになりました。
では、この新しく発見された知識を使用して、データベースとしてMariaDBCockerコンテナーを使用してBuddyCI / CDワークフローを構築してみませんか?または、アプリケーション用のMariaDBサービスを作成しますか?