MySQL公式Dockerミラーの使用
5964 ワード
1..
MySQLインスタンスを起動するには、次のコマンドを直接使用することもできます.
これにより、
コンテナの作成が完了すると、作成したMySQLコンテナのインスタンスが
2.他のDockerコンテナでのアプリケーションへのMySQLの接続
このミラーでは、MySQLの標準ポート
コンテナ接続を使用する例は次のとおりです.
注:上記の例の
MySQLサーバコンテナにアクセスするには、コンテナ接続のほかに、次の2つの方法でMySQLデータベースサーバコンテナにアクセスできます. MySQLサーバコンテナインスタンスを作成するときに、 はDockerネットワーク(Networking)を介して接続できます.この方法は操作が複雑ですが、より柔軟で、より複雑なネットワーク環境に適用できます.
詳細は次のとおりです. Dockerネットワーク-ポートマッピング、コンテナリンク、Networking 3.MySQLコマンドラインクライアント接続MySQL
先に作成したMySQLサーバコンテナでは、アクセスポートを外部に露出していません.コマンドラインクライアントを起動し、コマンドラインクライアントに基づいてデータベースサーバを管理できます.
実行後に
Docker以外の方法で、またはMySQLサーバコンテナにリモートでアクセスする必要がある場合は、コンテナの作成時に
4.Shellでのコンテナおよびログ表示へのアクセス
MySQLサーバログは、Dockerコンテナログから直接アクセスできます(リアルタイムログ表示では
5.カスタムMySQLプロファイルの使用
デフォルトでは、MySQLの起動プロファイルは
したがって、カスタム構成を使用する場合は、ホストホストで構成ファイルを作成し、コンテナを作成するときに
たとえば、ホストに
上記の例では、
たとえば、MySQLサーバコンテナを起動し、UTF-8(
詳細構成パラメータは、次のコマンドで表示できます.
6.環境変数 にログインすることができる. に出力. を強制的に変更する使い捨てパスワードを指定します.
7.データストアについてデータボリュームコンテナ:Dockerのデフォルトのデータ管理方式を使用してデータベースのデータストレージを管理します.この方式では、データベースファイルがデータベースの内部に書き込まれます.この方式はユーザにとって非常に簡単であり,欠点はシンクホスト上で格納されたデータを見つけることである. 外部データボリューム:シンクホストにデータディレクトリを作成し、コンテナ内部にデータディレクトリをマウントします.この方法では、ホスト上でデータ管理を容易に見つけることができますが、データディレクトリの存在を確保する必要があります.
外部データボリュームを使用する場合、ダミーホストには
ここで、
データベースのバックアップ
Docker以外の環境で使用されるMySQLバックアップツールの多くは、
次に、
mysql
サーバーインスタンスの起動mysql
ミラーを使用してMySQLコンテナを作成または起動する場合は、まずミラーをローカルにダウンロードできます.$ docker pull mysql
MySQLインスタンスを起動するには、次のコマンドを直接使用することもできます.
$ docker run --name itbilu-mysql -e MYSQL_ROOT_PASSWORD=my-pass -d mysql:5.7
これにより、
itbilu-mysql
というMySQLデータベースサーバコンテナのインスタンスを作成しました.データベースの作成時に、環境変数MYSQL_ROOT_PASSWORD
によってデータベースのroot
パスワードが設定され、使用するミラーバージョンも5.7
ラベルによって指定されます.コンテナの作成が完了すると、作成したMySQLコンテナのインスタンスが
docker ps
コマンドで表示されます.$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
872e8133e7ac mysql:5.7 "docker-entrypoint..." 15 seconds ago Up 14 seconds 3306/tcp itbilu-mysql
2.他のDockerコンテナでのアプリケーションへのMySQLの接続
このミラーでは、MySQLの標準ポート
3306
がエクスポートされます.これにより、MySQLサーバにアクセスする必要があるコンテナで、--link
パラメータを使用してコンテナリンクを介して、MySQLサーバコンテナインスタンスをMySQLを使用する必要があるアプリケーションコンテナに接続できます.コンテナ接続を使用する例は次のとおりです.
$ docker run --name some-app --link itbilu-mysql:mysql -d application-that-uses-mysql
注:上記の例の
application-that-uses-
ミラーは存在しません.操作のプレゼンテーションのみです.以下同様です.MySQLサーバコンテナにアクセスするには、コンテナ接続のほかに、次の2つの方法でMySQLデータベースサーバコンテナにアクセスできます.
-p
または-P
パラメータを使用してデータベース・サーバ・ポートをホストにマッピングし、ホストから直接アクセスします.この方法は簡単ですが、データベース・ポートを外部に露出する必要があります.詳細は次のとおりです.
先に作成したMySQLサーバコンテナでは、アクセスポートを外部に露出していません.コマンドラインクライアントを起動し、コマンドラインクライアントに基づいてデータベースサーバを管理できます.
実行後に
mysql
コマンドラインクライアントを起動する別のMySQLインタラクティブコンテナを実行します.$ docker run -it --link itbilu-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
Docker以外の方法で、またはMySQLサーバコンテナにリモートでアクセスする必要がある場合は、コンテナの作成時に
-p
または-P
を介してホストとポートバインドを行い、その後、通常のMySQLサーバのようにアクセスまたは操作を行うことができます.4.Shellでのコンテナおよびログ表示へのアクセス
docker exec
コマンドを使用すると、Dockerコンテナの内部でコマンドを実行できます.mysql
コンテナには、次の方法でshell
接続を確立できます.$ docker exec -it itbilu-mysql bash
root@cc9417196c73:/#
MySQLサーバログは、Dockerコンテナログから直接アクセスできます(リアルタイムログ表示では
-f
パラメータを追加できます):$ docker logs itbilu-mysql
5.カスタムMySQLプロファイルの使用
デフォルトでは、MySQLの起動プロファイルは
/etc/mysql/my.cnf
ですが、/etc/mysql/conf.d
ディレクトリの下に.cnf
形式のファイルがある場合は、このファイルのコンフィギュレーション・アイテムを使用してデフォルトのコンフィギュレーションを置き換えます.したがって、カスタム構成を使用する場合は、ホストホストで構成ファイルを作成し、コンテナを作成するときに
-v
パラメータを使用して、mysql
コンテナの/etc/mysql/conf.d
ディレクトリにデータボリュームでカスタム構成をマウントできます.たとえば、ホストに
/my/custom/config-file.cnf
プロファイルが存在する場合、MySQLコンテナは次のように起動できます.$ docker run --name itbilu-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-pass -d mysql:5.7
上記の例では、
itbilu-mysql
という名前のMySQLサーバコンテナが起動します.このファイルは、/etc/mysql/my.cnf
と/etc/mysql/conf.d/config-file.cnf
の構成を同時に使用します.cnf
ファイルを使用しない構成.cnf
ファイルを使用して構成するほか、起動コンテナでパラメータ形式で構成をmysqld
に渡すこともできます.たとえば、MySQLサーバコンテナを起動し、UTF-8(
utf8mb4
)形式のテーブルエンコーディングを使用します.$ docker run --name itbilu-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
詳細構成パラメータは、次のコマンドで表示できます.
$ docker run -it --rm mysql:tag --verbose --help
6.環境変数
mysql
コンテナを起動すると、docker run
コマンドに1つ以上の環境変数を入力してMySQLインスタンスの構成を調整できます.設定できる環境変数は次のとおりです.MYSQL_ROOT_PASSWORD
:必須.MySQL root
ユーザーを設定するためのパスワードMYSQL_DATABASE
:オプション.ミラーがコンテナを起動するときに作成するデータベースを指定します.ユーザー/パスワードが指定されている場合、そのユーザーはこのデータベースのスーパーユーザーになります.MYSQL_USER
MYSQL_PASSWORD
:オプション.新しいユーザーを作成し、パスワードを設定します.MYSQL_ALLOW_EMPTY_PASSWORD
:オプション.yes
に設定場合は、空のパスワードでMYSQL_RANDOM_ROOT_PASSWORD
:オプション.yes
に設定と、root
のユーザに対してランダムパスワードが設定(pwgen
を使用)、生成されたランダムパスワードはstdout
MYSQL_ONETIME_PASSWORD
:オプション.root
のユーザーに対して、ユーザーが初めてログインしたときに7.データストアについて
mysql
ミラーを使用してMySQLコンテナを作成する場合、データベース・データ・ストレージには次の2つの方法があります.外部データボリュームを使用する場合、ダミーホストには
/my/own/datadir
ディレクトリがあります.次のようにmysql
コンテナを起動し、ディレクトリをコンテナにマウントできます.$ docker run --name itbilu-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
ここで、
-v /my/own/datadir:/var/lib/mysql
はデータボリュームのマウントであり、シンクホストの/my/own/datadir
ディレクトリをコンテナ内の/var/lib/mysql
ディレクトリにマウントすることを示す.このディレクトリはMySQLのデフォルトのデータディレクトリです.カスタム構成を使用する場合は、対応する変更を行う必要があります.データベースのバックアップ
Docker以外の環境で使用されるMySQLバックアップツールの多くは、
mysqld
サーバにアクセスできる限り、コンテナ環境で使用できます.次に、
docker exec
を使用してmysql
コンテナ内のデータベースをバックアップする例を示します.$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql