type
status
date
slug
summary
tags
category
icon
password
书籍
ガイド付き演習: MySQL データベースのロード
この演習では、MySQL データベースコンテナを作成し、コンテナからホストへのポート転送を行い、SQL スクリプトをロードしてデータベースを設定します。
リソース:
- ファイル: 該当なし
- アプリケーション URL: 該当なし
- イメージ: RHSCL MySQL 5.7 イメージ (rhscl/mysql-57-rhel7)
目標:
- 永続的なストレージを備えた MySQL データベースコンテナを展開できるようになります。
- SQL スクリプトをデータベースにロードできるようになります。
手順:
- データベースの永続的ストレージを設定する
最初に、データベースがコンテナの再起動後もデータを保持できるように必要なディレクトリを作成します。
ターミナルで以下のコマンドを実行します:
- MySQL コンテナインスタンスの作成とポート転送設定
p
パラメータでポート転送を設定。ホストのポート 13306 への接続はコンテナ内の 3306 ポートに転送されます。/var/local/mysql
ディレクトリは、セットアップスクリプトによって適切な権限で作成されていることを確認してください。
永続ストレージとポート転送を設定した MySQL コンテナを作成します。以下のコマンドを実行します:
- コンテナが正しく起動したことを確認する
以下のコマンドを実行して、コンテナが起動していることを確認します:
出力結果に
PORTS
の列でポート転送が表示されていることを確認します。- データベースをロードする
次に、SQL スクリプトを使用してデータベースをロードします。以下のコマンドを実行します:
- データベースのロードが成功したことを確認する
以下のコマンドを実行して、データベースにデータがロードされたかを確認します:
- コンテナ内で確認する方法
コンテナ内の MySQL にアクセスして確認する方法もあります。以下のコマンドでコンテナ内に bash シェルを開きます:
- コンテナ内でデータを確認する
bash シェル内で以下のコマンドを実行して、データベースの内容を確認します:
- コンテナ内から exit する
データ確認後、bash シェルを終了します:
- 他の方法でデータを確認する
コンテナ内の絶対パスを使ってプロセスを注入し、データを確認することもできます:
注意:
mysql
コマンドは $PATH
に含まれていないため、絶対パスを使用する必要があります。- データベースが正しく設定されたか確認する
ターミナルで以下のコマンドを実行して、設定を確認します:
- コンテナとボリュームの削除 最後に、作成したコンテナとボリュームを削除します:
- コンテナを停止する:
- 停止したコンテナを削除する:
- コンテナイメージを削除する:
- データベースデータを保存していたディレクトリを削除する:
これでガイド付き演習は完了です。
ソリューション:コンテナ管理
このラボでは、MySQLデータベースデータをホストフォルダに永続的に保存するコンテナをデプロイし、データベースをロードしてコンテナを管理する方法を学びます。
1. MySQLデータ保存用のホストフォルダ作成
コンテナをデプロイする前に、MySQLのデータを保存するホストディレクトリを設定する必要があります。
1.1 ホストフォルダの作成
以下のコマンドで
/var/local/mysql
ディレクトリを作成します:1.2 SELinuxコンテキストの設定
Dockerがこのディレクトリにアクセスできるように、適切なSELinuxコンテキストを設定します:
1.3 フォルダの所有者を変更
MySQLユーザー(
uid=27
)とMySQLグループ(gid=27
)にホストフォルダの所有権を変更します:2. MySQLコンテナインスタンスのデプロイ
次に、MySQLコンテナを以下の条件でデプロイします:
- 名前:
mysql-1
- デーモンとして実行
- ボリューム:
/var/local/mysql
ホストフォルダから/var/lib/mysql/data
コンテナフォルダへ
- コンテナイメージ:
rhscl/mysql-57-rhel7
- ポート転送:なし
- 環境変数:
MYSQL_USER=user1
MYSQL_PASSWORD=mypa55
MYSQL_DATABASE=items
MYSQL_ROOT_PASSWORD=r00tpa55
2.1 コンテナの作成と起動
以下のコマンドでコンテナを作成し、起動します:
2.2 コンテナが正しく起動したか確認
以下のコマンドでコンテナの状態を確認します:
3. データベースのロード
次に、
db.sql
スクリプトを使ってデータベースをロードします。3.1 コンテナのIPアドレスを取得
コンテナのIPアドレスを確認します:
3.2 データベースをロード
以下のコマンドでデータベースをロードします:
CONTAINER_IP
は、前のコマンドで取得したIPアドレスに置き換えます。3.3 データベースの確認
以下のコマンドでデータベースがロードされたことを確認します:
4. コンテナの停止
次に、コンテナを停止します。このステップは、新しいコンテナが同じボリュームを使用するため、データベースの破損を防ぐために重要です。コンテナを再起動しないでください。
コンテナを停止
以下のコマンドでコンテナを停止します:
5. 新しいMySQLコンテナの作成
次に、以下の条件で新しいコンテナ
mysql-2
を作成します:- 名前:
mysql-2
- デーモンとして実行
- ボリューム:
/var/local/mysql
ホストフォルダから/var/lib/mysql/data
コンテナフォルダへ
- コンテナイメージ:
rhscl/mysql-57-rhel7
- ポート転送:ホストのポート
13306
からコンテナのポート3306
へ
- 環境変数:
MYSQL_USER=user1
MYSQL_PASSWORD=mypa55
MYSQL_DATABASE=items
MYSQL_ROOT_PASSWORD=r00tpa55
5.1 新しいコンテナの作成と起動
以下のコマンドで新しいコンテナを作成して起動します:
5.2 コンテナが正しく起動したか確認
以下のコマンドでコンテナの状態を確認します:
6. コンテナのリストを保存
すべてのコンテナ(停止中のものも含む)の情報を
/tmp/my-containers
ファイルに保存します:7. コンテナ内でデータベースを確認
コンテナ内のシェルにアクセスし、データベースとテーブルが利用可能か確認します。
7.1 コンテナのbashシェルにアクセス
以下のコマンドでコンテナ内に入ります:
7.2 MySQLサーバーに接続
以下のコマンドでMySQLに接続します:
7.3 データベースを確認
以下のコマンドでデータベースを確認します:
7.4 テーブルを確認
items
データベースのテーブルを確認します:7.5 テーブルのデータを確認
テーブルからデータを確認します:
7.6 シェルから退出
MySQLクライアントおよびコンテナシェルから退出します:
8. データの追加
ポート転送を使用して、
Item
テーブルに新しい行を追加します。8.1 MySQLに接続
以下のコマンドでMySQLに接続します:
8.2 データの挿入
以下のコマンドで新しいデータを挿入します:
8.3 MySQLクライアントから退出
以下のコマンドでMySQLクライアントを終了します:
9. 不要なコンテナの削除
最初のコンテナ
mysql-1
は不要となるため、リソースを解放するために削除します。9.1 コンテナを削除
以下のコマンドでコンテナを削除します:
10. ラボの確認
ラボが正しく実行されたかを確認するために、以下のコマンドを実行します:
11. コンテナとリソースの削除
ラボで作成したコンテナとリソースを削除します。
11.1 コンテナを停止
以下のコマンドで
mysql-2
コンテナを停止します:11.2 コンテナを削除
以下のコマンドでコンテナを削除します:
11.3 コンテナイメージを削除
以下のコマンドでコンテナイメージを削除します:
この章で学んだことは以下の通りです:
- コンテナ管理に関する基本的なコマンド:
- docker run: 新しいコンテナを作成します。
- docker ps: 実行中のコンテナを一覧表示します。
- docker inspect: コンテナのメタデータを表示します。
- docker stop: 実行中のコンテナを停止します。
- docker kill: コンテナを強制的に停止します。
- docker restart: 停止したコンテナを再起動します。
- docker rm: コンテナを削除します。
- コンテナストレージ:
- コンテナストレージは一時的であり、コンテナが削除されるとそのデータは保存されません。
- 永続的なデータの取り扱い:
- ホストのフォルダを使用してデータを永続化できます。
- ボリュームのマウント:
- docker runコマンドで
v
オプションを使用して、ボリュームをマウントできます。
- コンテナ内での追加プロセスの実行:
- docker execコマンドを使用して、実行中のコンテナ内で追加のプロセスを開始できます。
- ポートマッピング:
- docker runコマンドで
p
オプションを使用して、ホストとコンテナ間でポートをマッピングできます。
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/142d7ae8-88e2-8011-a8b1-f585eed26463
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章