type
status
date
slug
summary
tags
category
icon
password

ガイド付き演習: MySQL データベースのロード

この演習では、MySQL データベースコンテナを作成し、コンテナからホストへのポート転送を行い、SQL スクリプトをロードしてデータベースを設定します。

リソース:

  • ファイル: 該当なし
  • アプリケーション URL: 該当なし
  • イメージ: RHSCL MySQL 5.7 イメージ (rhscl/mysql-57-rhel7)

目標:

  • 永続的なストレージを備えた MySQL データベースコンテナを展開できるようになります。
  • SQL スクリプトをデータベースにロードできるようになります。

手順:

  1. データベースの永続的ストレージを設定する
    1. 最初に、データベースがコンテナの再起動後もデータを保持できるように必要なディレクトリを作成します。
      ターミナルで以下のコマンドを実行します:
  1. MySQL コンテナインスタンスの作成とポート転送設定
    1. 永続ストレージとポート転送を設定した MySQL コンテナを作成します。以下のコマンドを実行します:
      • p パラメータでポート転送を設定。ホストのポート 13306 への接続はコンテナ内の 3306 ポートに転送されます。
      • /var/local/mysql ディレクトリは、セットアップスクリプトによって適切な権限で作成されていることを確認してください。
  1. コンテナが正しく起動したことを確認する
    1. 以下のコマンドを実行して、コンテナが起動していることを確認します:
      出力結果に PORTS の列でポート転送が表示されていることを確認します。
  1. データベースをロードする
    1. 次に、SQL スクリプトを使用してデータベースをロードします。以下のコマンドを実行します:
  1. データベースのロードが成功したことを確認する
    1. 以下のコマンドを実行して、データベースにデータがロードされたかを確認します:
  1. コンテナ内で確認する方法
    1. コンテナ内の MySQL にアクセスして確認する方法もあります。以下のコマンドでコンテナ内に bash シェルを開きます:
  1. コンテナ内でデータを確認する
    1. bash シェル内で以下のコマンドを実行して、データベースの内容を確認します:
  1. コンテナ内から exit する
    1. データ確認後、bash シェルを終了します:
  1. 他の方法でデータを確認する
    1. コンテナ内の絶対パスを使ってプロセスを注入し、データを確認することもできます:
      注意: mysql コマンドは $PATH に含まれていないため、絶対パスを使用する必要があります。
  1. データベースが正しく設定されたか確認する
    1. ターミナルで以下のコマンドを実行して、設定を確認します:
  1. コンテナとボリュームの削除 最後に、作成したコンテナとボリュームを削除します:
  • コンテナを停止する:
    • 停止したコンテナを削除する:
      • コンテナイメージを削除する:
        • データベースデータを保存していたディレクトリを削除する:
          これでガイド付き演習は完了です。
           

          ソリューション:コンテナ管理

          このラボでは、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 コンテナイメージを削除

          以下のコマンドでコンテナイメージを削除します:
          この章で学んだことは以下の通りです:
          1. コンテナ管理に関する基本的なコマンド
              • docker run: 新しいコンテナを作成します。
              • docker ps: 実行中のコンテナを一覧表示します。
              • docker inspect: コンテナのメタデータを表示します。
              • docker stop: 実行中のコンテナを停止します。
              • docker kill: コンテナを強制的に停止します。
              • docker restart: 停止したコンテナを再起動します。
              • docker rm: コンテナを削除します。
          1. コンテナストレージ
              • コンテナストレージは一時的であり、コンテナが削除されるとそのデータは保存されません。
          1. 永続的なデータの取り扱い
              • ホストのフォルダを使用してデータを永続化できます。
          1. ボリュームのマウント
              • docker runコマンドで v オプションを使用して、ボリュームをマウントできます。
          1. コンテナ内での追加プロセスの実行
              • docker execコマンドを使用して、実行中のコンテナ内で追加のプロセスを開始できます。
          1. ポートマッピング
              • docker runコマンドで p オプションを使用して、ホストとコンテナ間でポートをマッピングできます。
          相关文章
          RedHat EX200 本番近い試験問題集
          Lazy loaded image
          RedHat EX200 本番試験問題集(有料版)
          Lazy loaded image
          18-Red Hat DO285 第5章:カスタムコンテナイメージの作成-1:コンテナイメージの管理ラボ
          Lazy loaded image
          17-Red Hat DO285 第4章:コンテナイメージの管理-4:コンテナイメージの管理ラボ
          Lazy loaded image
          16-Red Hat DO285 第4章:コンテナイメージの管理-3:ガイド付き演習
          Lazy loaded image
          15-Red Hat DO285 第4章:コンテナイメージの管理-2:コンテナイメージの操作
          Lazy loaded image
          13-Red Hat DO285 第3章: コンテナの管理-6:ガイド付き演習:MySQL データベースのロード11-Red Hat DO285 第3章: コンテナの管理-5:Dockerネットワークのアクセス
          Loading...
          みなみ
          みなみ
          一个普通的干饭人🍚
          最新发布
          02-生成AIパスポート試験対策:第2章「生成AI」
          2025-2-1
          01-生成AIパスポート試験対策:第1章「人口知能」
          2025-2-1
          究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
          2025-1-27
          不要再傻傻的直接买NISA啦
          2025-1-27
          Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
          2025-1-24
          529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
          2025-1-22
          公告
          🎉欢迎访问我的博客🎉
          - 感谢您的支持 --
          本站点于2024/09/01建立
          👏主要分享IT相关主题👏
          系统管理:
          Redhat…
          容器和编排:
          Kubernetes、Openshift…
          云计算:
          AWS、IBM…
          AI入门
          以及技术笔记和考证经验
          定期更新,欢迎互动。
          感谢访问!
          快速浏览相关标签