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 を使用する方法

推薦する

Node.jsはexpress-fileuploadミドルウェアを使用してファイルをアップロードします

目次プロジェクトを初期化するサーバーの作成クライアントを初期化するコンポーネントの記述ファイルアップ...

システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません

今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................

JS における ES6 継承と ES5 継承の違い

目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...

Unix/Linux システムにおける nobody ユーザーと nologin の詳細な紹介

Unix/Linux システムの nobody ユーザーとは何ですか? 1. Windows システ...

MySQLデータベースはsysbenchに基づくOLTPベンチマークテストを実装します

Sysbench は、MySQL データベース ストレージ エンジン InnoDB のディスク I/...

スプライトとフォントアイコンを実装するためのCSS

スプライト:以前は、各画像リソースは独立した画像でした。ブラウザが Web サイト内のさまざまな W...

操作タイムアウトがないときにMySQLサーバーがアクティブに切断される問題を解決します

MySQL サービスを使用する場合、通常の状況では、MySQL のタイムアウト設定は 8 時間 (2...

MySQLデータベースでの値の追加、変更、削除、クリアの例

3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...

CSS を使用してデータ ホットスポット効果を実現する方法

効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...

MySQL におけるデータベース間関連クエリメソッド

ビジネスシナリオ: 異なるデータベース内のテーブルをクエリするたとえば、関連付けられるテーブルは、マ...

Webデザインにおけるフォームデザインテクニックのまとめ

「脳が多数の領域間の関係を処理できるように、入力は論理的なグループに分割する必要があります。」 – ...

MySQL ログイン エラーを解決する: 'ユーザー 'root'@'localhost' へのアクセスが拒否されました

まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...

ウェブサイトのビジュアルデザイン(画像とテキスト)における情報伝達の役割と方法

現代の Web ビジュアル デザインは、初期の情報の積み重ねから、その後のグラフィックスと抽象化、そ...

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...