Docker ケース分析: MySQL データベース サービスの構築

Docker ケース分析: MySQL データベース サービスの構築

データベースサービスを構築するには、公式の MySQL イメージを使用します。現在の最新バージョンはバージョン 8.0.19 に相当します。公式バージョンが更新された後の次の手順で互換性の問題が発生しないように、イメージを使用するときにバージョン 8.0.19 を指定できます。

1 設定ディレクトリとデータディレクトリを作成する

このマシン上に、MySQL の設定とデータを保存するディレクトリを作成します。

  • 設定ファイルディレクトリ: ~/docker/conf/mysql
  • データファイルディレクトリ: ~/docker/data/mysql
docker プル mysql

3 イメージからホストに構成ファイルをコピーする

イメージの内部構成ファイルは /etc/mysql ディレクトリに保存されます。構成ファイル ディレクトリをローカルの ~/docker/conf/ ディレクトリにコピーするための一時コンテナが作成されます。

# mysqlという名前のコンテナを作成します。docker run --name mysql -e MYSQL_ROOT_PASSWORD=crane -d mysql

# docker コンテナ内の設定ファイルをローカルの ~/docker/conf/mysql ディレクトリにコピーします。docker cp mysql:/etc/mysql /Users/crane/docker/conf/

# 一時コンテナを停止して削除する docker stop mysql
docker rm mysql

4 MySQLコンテナを作成して実行する

ホスト構成とデータ ファイル ディレクトリを Docker コンテナーにマウントし、ターミナルで次のコマンドを実行します。

# ~/docker/conf/mysql には mysql 設定ファイルが含まれています # ~/docker/data/mysql には mysql データファイルが含まれています # ローカルポート 3306 と 33060 は、それぞれ docker の 3306 と 33060 ポートにマップされています # データベースのルートパスワードは crane です
# -d バックグラウンドでdockerを実行する
docker run --name mysql -v ~/docker/conf/mysql:/etc/mysql/conf.d -v ~/docker/data/mysql:/var/lib/mysql -p 3306:3306 -p 33060:33060 -e MYSQL_ROOT_PASSWORD=crane -d mysql

5 ホストがデータベースに接続する

5.1 端末コマンド接続

前の手順でコンテナが正常に起動したら、ホスト端末で次のコマンドを実行してデータベースに接続します。

# 次のコマンドを入力してEnterキーを押し、データベースパスワードcraneを入力します
mysql -uroot -p --protocol=tcp

ここに画像の説明を挿入

上記のコマンドは、データベースへの接続にTCPを使用するように指定しています。--protocol=tcpを追加しない場合、デフォルトの接続はソケットになり、次のエラーが報告されます。

ここに画像の説明を挿入

5.2 データベースツール接続

DataGrip などのデータベース ツールを使用して接続し、関連するデータ操作を実行することもできます。

ここに画像の説明を挿入

ここに画像の説明を挿入

6 MySQLログを表示する

コンテナの通常の操作中は、次のコマンドを使用してログを表示できます。

docker ログ -f mysql

データのバックアップと移行を容易にするために、サービスを構築するときに外部にマウントされた構成とデータを使用します。同じバージョンの Docker イメージを使用して別のホストでコンテナを起動し、バックアップされた構成とデータをマウントすると、まったく同じデータベース構成とデータが得られます。

公式MySQLイメージを参照

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker に MySQL をデプロイする例
  • Docker に MySQL インスタンスをインストールして実行する
  • Docker で MySQL クラスターを構築する方法の例
  • Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

<<:  Web フロントエンドのパフォーマンス最適化の詳細説明: リソースのマージと圧縮

>>:  JS で async と await を使用する方法

推薦する

Dockerコンテナのタイムゾーン調整操作

Docker コンテナのタイムゾーンがホストマシンと一致しているかどうかを確認するにはどうすればよい...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

MySQLの高性能最適化スキルの概要

データベースコマンド仕様すべてのデータベース オブジェクト名には小文字を使用し、アンダースコアで区切...

フローティング要素が親要素の高さを崩す原因と解決策の詳細な説明

フローティング要素は、親要素の高さを縮小します。要素を float float:left/right...

MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...

Dockerイメージをプルしてバージョンを確認する方法

イメージのバージョンとタグを確認するには、docker hubで確認する必要があります。アドレスは次...

Windows 10 で MySQL 8.0.12 の解凍バージョンをインストールして構成する方法 (グラフィック チュートリアル付き)

この記事では、MySQL 8.0.12 の解凍版のインストールと設定方法を記録し、皆様と共有します。...

VueはExcelデータをエクスポートするパブリック関数メソッドをカプセル化します

vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...

MySQLで適切なインデックスを選択する方法

まずは栗を見てみましょう EXPLAIN select * from employees where...

入力が正しいにもかかわらず、MySQL 8.0 でアクセスが拒否される問題を解決する

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

1. 問題Docker コンテナのログにより、ホストのディスク領域がいっぱいになりました。 doc...

Tomcatのサーバーオプションの詳細な説明

1. 構成デフォルトでは、最初の 2 つはチェックされていないので、チェックする必要があります。 (...

Linux カーネル デバイス ドライバー カーネル時間管理に関する注意事項

/****************** * Linux カーネルの時間管理 ***********...

DockerがMySQL構成実装プロセスを開始

目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...

MySQL でパーティション分割後にクエリを実装するために MRG_MyISAM (MERGE) を使用する例

大量のデータベース データを最適化することは非常に高度な科学であり、開発者が習得する必要がある専門的...