MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

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

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

警告

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

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

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

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 アカウントにサインインして、ランディングページで次のステップを実行します:

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

docker load -i mysql-enterprise-server-version.tar

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

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

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

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 コンテナを起動するには、次のコマンドを使用します:

docker run --name=mysql1 --restart on-failure -d mysql/mysql-server:8.0 

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

docker run --name=mysql1 --restart on-failure -d mysql/enterprise-server:8.0 

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

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 オプションを使用すると、コンテナがバックグラウンドで実行されます。 次のコマンドを使用して、コンテナからの出力を監視します:

docker logs mysql1

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

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 クライアントを起動します:

docker exec -it mysql1 mysql -uroot -p

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

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

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

コンテナシェルアクセス

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

shell> docker exec -it mysql1 bash
bash-4.2#

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

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 コンテナを停止するには、次のコマンドを使用します:

docker stop mysql1

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

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

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

docker start mysql1

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

docker restart mysql1

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

docker stop mysql1
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 にアップグレードするには、次のステップに従います:

Docker での MySQL Server のデプロイに関するその他のトピック

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