MySQL公式Dockerミラーの使用

5964 ワード

1..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データベースサーバコンテナにアクセスできます.
  • MySQLサーバコンテナインスタンスを作成するときに、-pまたは-Pパラメータを使用してデータベース・サーバ・ポートをホストにマッピングし、ホストから直接アクセスします.この方法は簡単ですが、データベース・ポートを外部に露出する必要があります.
  • はDockerネットワーク(Networking)を介して接続できます.この方法は操作が複雑ですが、より柔軟で、より複雑なネットワーク環境に適用できます.

  • 詳細は次のとおりです.
  • Dockerネットワーク-ポートマッピング、コンテナリンク、Networking
  • 3.MySQLコマンドラインクライアント接続MySQL
    先に作成した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_USERMYSQL_PASSWORD:オプション.新しいユーザーを作成し、パスワードを設定します.
  • MYSQL_ALLOW_EMPTY_PASSWORD:オプション.yesに設定場合は、空のパスワードで
  • にログインすることができる.
  • MYSQL_RANDOM_ROOT_PASSWORD:オプション.yesに設定と、rootのユーザに対してランダムパスワードが設定(pwgenを使用)、生成されたランダムパスワードはstdout
  • に出力.
  • MYSQL_ONETIME_PASSWORD:オプション.rootのユーザーに対して、ユーザーが初めてログインしたときに
  • を強制的に変更する使い捨てパスワードを指定します.
    7.データストアについてmysqlミラーを使用してMySQLコンテナを作成する場合、データベース・データ・ストレージには次の2つの方法があります.
  • データボリュームコンテナ:Dockerのデフォルトのデータ管理方式を使用してデータベースのデータストレージを管理します.この方式では、データベースファイルがデータベースの内部に書き込まれます.この方式はユーザにとって非常に簡単であり,欠点はシンクホスト上で格納されたデータを見つけることである.
  • 外部データボリューム:シンクホストにデータディレクトリを作成し、コンテナ内部にデータディレクトリをマウントします.この方法では、ホスト上でデータ管理を容易に見つけることができますが、データディレクトリの存在を確保する必要があります.

  • 外部データボリュームを使用する場合、ダミーホストには/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