Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

2.5.6.1 Docker を使用した MySQL Server デプロイメントの基本ステップ

警告

MySQL チームによって管理される MySQL Docker イメージは、Linux プラットフォーム専用に構築されています。 他のプラットフォームはサポートされておらず、これらの MySQL Docker イメージを使用するユーザーは独自のリスクでこれを実行しています。 Linux 以外のオペレーティングシステムでこれらのコンテナを実行する際の既知の制限については、the discussion here を参照してください。

MySQL Server Docker イメージのダウンロード

別のステップでサーバーイメージをダウンロードする必要は厳密にはありませんが、Docker コンテナを作成する前にこのステップを実行すると、ローカルイメージが最新の状態になります。 MySQL Community Edition イメージをダウンロードするには、次のコマンドを実行します:

Press CTRL+C to copy
docker pull mysql/mysql-server:tag

tag は、プルするイメージバージョン (5.6, 5.7, 8.0latest など) のラベルです。 :tag を省略すると、latest ラベルが使用され、MySQL Community Server の最新の GA バージョンのイメージがダウンロードされます。 「Docker Hub の mysql/mysql-server ページ」で使用可能なバージョンについては、タグのリストを参照してください。

MySQL Enterprise Edition イメージをダウンロードするには、My Oracle Support の web サイトにアクセスし、Oracle アカウントにサインインして、ランディングページで次のステップを実行します:

  • 「パッチと更新版」タブを選択します。

  • 「パッチ検索」リージョンに移動し、「検索」タブで「製品またはファミリ (拡張)」サブタブに切り替えます。

  • Product フィールドに MySQL Server と入力し、「リリース」フィールドに目的のバージョン番号を入力します。

  • 追加フィルタのドロップダウンを使用して「説明」を選択 - 「次を含む」で、テキストフィールドに Docker と入力します。

    次の図に、MySQL Server 8.0 用の MySQL Enterprise Edition イメージの検索設定を示します:

    MySQL Enterprise イメージの検索設定を示す図
  • 検索ボタンをクリックし、結果リストから目的のバージョンを選択してダウンロードボタンをクリックします。

  • 表示される「ファイルのダウンロード」ダイアログボックスで、Docker イメージの .zip ファイルをクリックしてダウンロードします。

ダウンロードした .zip アーカイブを解凍して (mysql-enterprise-server-version.tar) 内の tarball を取得し、次のコマンドを実行してイメージをロードします:

Press CTRL+C to copy
docker load -i mysql-enterprise-server-version.tar

次のコマンドを使用して、ダウンロードした Docker イメージをリストできます:

Press CTRL+C to copy
shell> docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql/mysql-server latest 3157d7f55f8d 4 weeks ago 241MB
MySQL Server インスタンスの起動

MySQL Server の新しい Docker コンテナを起動するには、次のコマンドを使用します:

Press CTRL+C to copy
docker run --name=container_name --restart on-failure -d image_name:tag

MySQL Server Docker イメージのダウンロード で説明されているように、イメージ名は docker images コマンドを使用して取得できます。

サーバーコンテナのカスタム名を指定するための --name オプションはオプションです。コンテナ名が指定されていない場合はランダムに生成されます。

--restart オプションは、コンテナの「再起動ポリシー」を構成するためのものです。クライアントセッション内でのサーバーの再起動のサポートを有効にするには、値 on-failure に設定する必要があります (たとえば、RESTART ステートメントがクライアントによって実行された場合や configuration of an InnoDB cluster instance 中に実行された場合)。 再起動のサポートを有効にして、クライアントセッション内で再起動を発行すると、サーバーとコンテナが停止してから再起動します。 サーバーの再起動のサポートは、MySQL 8.0.21 以降で使用できます。

たとえば、MySQL Community Server の新しい Docker コンテナを起動するには、次のコマンドを使用します:

Press CTRL+C to copy
docker run --name=mysql1 --restart on-failure -d mysql/mysql-server:8.0

My Oracle Support からダウンロードした Docker イメージを使用して MySQL Enterprise Server の新しい Docker コンテナを起動するには、次のコマンドを使用します:

Press CTRL+C to copy
docker run --name=mysql1 --restart on-failure -d mysql/enterprise-server:8.0

指定した名前およびタグの Docker イメージが以前の docker pull または docker run コマンドによってダウンロードされていない場合、イメージはダウンロードされます。 コンテナの初期化が開始され、docker ps コマンドを実行すると、実行中のコンテナのリストにコンテナが表示されます。 例:

Press CTRL+C to copy
shell> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a24888f0d6f4 mysql/mysql-server "/entrypoint.sh my..." 14 seconds ago Up 13 seconds (health: starting) 3306/tcp, 33060/tcp mysql1

コンテナの初期化には時間がかかる場合があります。 サーバーを使用する準備が整うと、docker ps コマンドの出力のコンテナの STATUS(health: starting) から (healthy) に変わります。

前述の docker run コマンドで -d オプションを使用すると、コンテナがバックグラウンドで実行されます。 次のコマンドを使用して、コンテナからの出力を監視します:

Press CTRL+C to copy
docker logs mysql1

初期化が終了すると、コマンド出力には root ユーザー用に生成されたランダムなパスワードが含まれます。たとえば、次のコマンドを使用してパスワードを確認します:

Press CTRL+C to copy
shell> docker logs mysql1 2>&1 | grep GENERATED GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs

コンテナ内から MySQL Server への接続

サーバーの準備ができたら、起動した MySQL Server コンテナ内で mysql クライアントを実行し、MySQL Server に接続できます。 次のように、docker exec -it コマンドを使用して、起動した Docker コンテナ内の mysql クライアントを起動します:

Press CTRL+C to copy
docker exec -it mysql1 mysql -uroot -p

要求されたら、生成された root パスワードを入力します (パスワードの検索方法については、前述の MySQL Server インスタンスの起動 の最後のステップを参照してください)。 MYSQL_ONETIME_PASSWORD オプションはデフォルトで true であるため、mysql クライアントをサーバーに接続したあと、次のステートメントを発行してサーバーの root パスワードをリセットする必要があります:

Press CTRL+C to copy
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

password を任意のパスワードに置き換えます。 パスワードがリセットされると、サーバーは使用可能になります。

コンテナシェルアクセス

MySQL Server コンテナにシェルアクセスできるようにするには、docker exec -it コマンドを使用してコンテナ内で bash シェルを起動します:

Press CTRL+C to copy
shell> docker exec -it mysql1 bash bash-4.2#

その後、コンテナ内で Linux コマンドを実行できます。 たとえば、コンテナ内のサーバーデータディレクトリのコンテンツを表示するには、次のコマンドを使用します:

Press CTRL+C to copy
bash-4.2# ls /var/lib/mysql auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql.sock.lock private_key.pem server-cert.pem sys ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql.sock performance_schema public_key.pem server-key.pem
MySQL コンテナの停止および削除

作成した MySQL Server コンテナを停止するには、次のコマンドを使用します:

Press CTRL+C to copy
docker stop mysql1

docker stop は SIGTERM シグナルを mysqld プロセスに送信するため、サーバーは正常にシャットダウンされます。

また、コンテナ (MySQL Server コンテナの場合は mysqld) のメインプロセスが停止すると、Docker コンテナは自動的に停止します。

MySQL Server コンテナを再起動するには:

Press CTRL+C to copy
docker start mysql1

単一のコマンドを使用して MySQL Server コンテナを停止して再起動するには:

Press CTRL+C to copy
docker restart mysql1

MySQL コンテナを削除するには、まず停止してから、docker rm コマンドを使用します:

Press CTRL+C to copy
docker stop mysql1
Press CTRL+C to copy
docker rm mysql1

Docker volume for the server data directory を同時に削除する場合は、docker rm コマンドに -v オプションを追加します。

MySQL Server コンテナのアップグレード
重要
  • MySQL へのアップグレードを実行する前に、セクション2.11「MySQL のアップグレード」 の手順に注意してください。 ここで説明されているその他の手順の中では、アップグレードの前にデータベースをバックアップすることが特に重要です。

  • このセクションの手順では、サーバーのデータと構成がホストに保持されている必要があります。 詳細は、データおよび構成の変更の永続化 を参照してください。

MySQL 5.7 の Docker インストールを 8.0 にアップグレードするには、次のステップに従います:

  • MySQL 5.7 サーバーを停止します (この例では、コンテナ名は mysql57):

    Press CTRL+C to copy
    docker stop mysql57
  • MySQL 8.0 Server Docker イメージをダウンロードします。 MySQL Server Docker イメージのダウンロード の手順を参照してください。MySQL 8.0 には正しいタグを使用してください。

  • (この例では bind-mounting によって) ホストに永続化されている古いサーバーデータおよび構成 (必要に応じて セクション2.11「MySQL のアップグレード」 を参照) を使用して、新しい MySQL 8.0 Docker コンテナ (この例では mysql80) を起動します。 MySQL Community Server の場合は、次のコマンドを実行します:

    Press CTRL+C to copy
    docker run --name=mysql80 \ --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \ -d mysql/mysql-server:8.0

    必要に応じて、mysql/mysql-server を正しいリポジトリ名に調整し、次のように置き換えます My Oracle Support からダウンロードされた mysql/enterprise-server for MySQL Enterprise Edition イメージ。

  • サーバーの起動が終了するまで待機します。 サーバーのステータスは、docker ps コマンドを使用して確認できます (その方法は、MySQL Server インスタンスの起動 を参照してください)。

  • MySQL 8.0.15 以前の場合: MySQL 8.0 Server コンテナで mysql_upgrade ユーティリティを実行します (MySQL 8.0.16 以降では不要):

    Press CTRL+C to copy
    docker exec -it mysql80 mysql_upgrade -uroot -p

    プロンプトが表示されたら、古い MySQL 5.7 Server の root パスワードを入力します。

  • MySQL 8.0 Server コンテナを再起動して、アップグレードを終了します:

    Press CTRL+C to copy
    docker restart mysql80
Docker での MySQL Server のデプロイに関するその他のトピック

サーバー構成、データと構成の永続化、サーバーエラーログおよびコンテナ環境変数など、Docker を使用した MySQL Server のデプロイの詳細は、セクション2.5.6.2「Docker での MySQL Server のデプロイに関するその他のトピック」 を参照してください。