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コンテナの入退出方法の詳細な説明

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

CSSは左固定と右適応のレイアウト方法を実現します

1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...

Mybatis+mysqlはストアドプロシージャを使用してシリアル番号実装コードを生成します。

同時操作によるデータの重複を避けるために、データベースを操作するときにストアドプロシージャを使用して...

JavaScriptの詳細な分析と方向の変更方法

目次これ方法オブジェクト内これを隠した厳密モードこれを変更してこれいつものように、まずはコードを見て...

MySQLデータクエリが多すぎるとOOMが発生するかどうかについての簡単な議論

目次サーバー層でのフルテーブルスキャンの影響InnoDB におけるフルテーブルスキャンの影響Inno...

携帯電話に GreasyFork js スクリプトをインストールするチュートリアル

目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...

UnityはMySQLに接続し、テーブルデータの実装コードを読み取ります

表は以下のとおりです。 Unity が読み取って呼び出すときのコード: データベース内の別のテーブル...

Centos7でファイルをバックアップするときは、バックアップファイルにバックアップの日付を追加します

Linux は、システム内のデバイス、インターフェース、ファイル、スタートアップ、アプリケーション ...

Docker環境でJenkinsを設定すると、タスクをビルドするときにコンソールログに文字化けした中国語の文字が表示されます

目次1. 問題の説明: 2. Jenkins設定のトラブルシューティング3. コードログのエンコード...

Mysql の遅いクエリ操作の概要

MySQL の遅いクエリの説明MySQL スロー クエリ ログは、MySQL が提供するログ レコー...

MySQL クエリ キャッシュのグラフィカルな説明

目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...

MySQL 起動時に報告される ERROR:2002 の分析と解決方法

序文この記事は主にMySQL起動エラー2002の分析と解決方法を紹介しています。参考と勉強のために共...

CSS3 はアニメーション属性を使用してクールな効果を実現します (推奨)

animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...

React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...

MySQLの累積集計原理と使用例の分析

この記事では、例を使用して、MySQL 累積集計の原理と使用方法を説明します。ご参考までに、詳細は以...