Docker アプリ導入

install_mysql57_base_docker.sh

helper.sh が配布するスクリプトです。/data/mysql5.7 のディレクトリを作成し、mysql57.cnf がなければ基本設定を書き込み、mysql:5.7.44 を取得してデータ・設定・初期化用ディレクトリをマウントしたコンテナを起動します。同名コンテナは強制削除して再作成します。

ワンライナー

curl -fL 'https://www.helper.sh/install_mysql57_base_docker.sh' -o './install_mysql57_base_docker.sh'

このコマンドは同梱ファイルをダウンロードするだけで、実行しません。保存したソースを確認し、バージョンを照合してから実行するか判断してください。

保存したファイルを照合

このページのビルドに同梱されたバイト列と照合します。ファイルはこのタブ内で処理し、この機能は送信・保存しません。上限は2 MiBです。

期待する SHA-256
6d16610c307e30338e693a6cfdbf6d86ffa85e6260b7407346ae3ca1bddf9ef3

同梱ファイルのバイト数: 6038

チェックサムファイルを保存

スクリプトとチェックサムを同じディレクトリに保存してください。GNU Coreutils のある Linux では次のコマンドでバイト列だけを検査できます。スクリプトは実行しません。コマンドには元のファイル名が必要です。

sha256sum --check './install_mysql57_base_docker.sh.sha256'

まだ照合していません。

スクリプトとチェックサムは同じサイトから取得し、独立した署名ではありません。一致しても安全性、上流の真正性、ホストへの適合性は証明しません。可変の依存先は別途確認してください。

検証と制限を読む

実行条件

  • Linux と systemd が動作し、Docker と root 権限を利用できること
  • 既定ではホストの 3306 番ポートが未使用であること
  • ホストの /data に書き込み権限があること

適用場面

  • MySQL 5.7 が必要な既存アプリの互換性を隔離環境で確認する
  • データ、設定、初期化 SQL をホストの /data/mysql5.7 以下で管理する
  • 公開前にレビューした手順で、互換性確認用のコンテナを再現する

主なポイント

  • /data/mysql5.7/data、conf.d、init を作成する
  • mysql:5.7.44 を取得し、自動再起動設定付きコンテナを起動する
  • root パスワードが指定されない場合はランダムに生成して表示する
  • 初回起動時にデータベースと一般ユーザーを作成する設定に対応する

推奨手順

  1. Docker と空きポートを確認し、対象ホストでの変更をレビューします。
  2. 実行する場合は sudo または root 権限が必要です。
  3. /data/mysql5.7 の既存データを保全してから、ディレクトリとコンテナの変更内容を確認します。
  4. 表示された認証情報をアクセス制御された方法で保管し、端末ログや共有履歴に残さないようにします。

注意事項

  • mysql:5.7.44 は古い固定バージョンです。互換性が必要な場合に用途を限り、更新可能なバージョンへの移行を計画してください。
  • MySQL のポートを公開する前にファイアウォールとネットワーク制御を確認してください。
  • このスクリプトはバックアップを作成せず、同名コンテナを強制削除して再作成します。実データでは使わず、先に /data/mysql5.7 を保全してください。

対応範囲と制限

  • Linux、systemd、Docker、root 権限が必要です。既定ではホストの 3306 番ポートを使います。mysql:5.7.44 に固定された旧版で、互換性確認向けです。
  • 指定できる引数は --data-dir、--container-name、--port、--root-password、--database、--user、--password です。MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD 環境変数も読み取ります。dry-run とバックアップはありません。
  • 指定したホストポートを公開します。Docker のポート公開は一部のホストファイアウォール規則を迂回する場合があります。ネットワーク制御を確認せず MySQL を公開しないでください。パスワードは Docker 環境引数とコンテナ設定から参照でき、スクリプトの出力にも表示されます。シェル履歴や共有ログに残さないでください。

変更されるファイル、サービス、データ

  • /data/mysql5.7/data、conf.d、init を作成します。mysql57.cnf は存在しない場合だけ作成し、既存データや設定は再利用します。
  • Docker が停止中なら起動し、mysql:5.7.44 を取得します。同名コンテナがあれば強制削除してから、ホストディレクトリをマウントした自動再起動コンテナを作成します。
  • コンテナを削除してもホストの bind mount データは削除されません。ただし再利用前のバックアップは作成しません。

読み取り専用の確認

  • 以下の例では既定のコンテナ名 mysql57 を使います。--container-name を変更した場合は読み替えてください。`docker ps --filter name=mysql57` と `docker logs --tail 100 mysql57` を確認します。
  • `docker inspect mysql57 --format '{{json .HostConfig.PortBindings}} {{json .Mounts}}'` で公開ポートとマウント先を確認します。
  • `docker exec -it mysql57 mysqladmin ping -h 127.0.0.1 -uroot -p` と `docker exec -it mysql57 mysql -uroot -p -e 'SELECT VERSION();'` を実行し、パスワードはプロンプトで入力します。

失敗した場合

起動確認に失敗したら、コンテナログ、空き容量、データディレクトリ、認証情報を確認してください。再試行前にホストデータを保全します。ヘルスチェックが警告でも最後に「completed」と表示される場合があります。

実行前にダウンロードして内容を確認し、バージョンを検証してください。ハッシュはこのバイト列を識別するだけで、安全性を証明しません。pipe 実行は取得した内容を直ちに実行し、上流の依存関係は変化することがあります。

関連トピック

Ubuntu: Docker 導入と VPN 接続の選択

ホストへの導入、クライアント接続、既存 Docker 上のサービスを区別し、旧イメージを新規構成の既定にしないでください。

トピックを見る

Docker サービス: 接続口と残存データを確認

HTTP、SQL、キャッシュ、FastCGI、イメージ内アプリを、プロトコルとデータ・置換影響で選びます。

トピックを見る

問題ページ

MySQL 5.7:コンテナを作り直しても以前の認証情報が残る理由

このスクリプトは mysql57 を置き換える際も /data/mysql5.7/data を再利用します。MySQL がアカウントを初期化するのはデータディレクトリが空のときだけなので、既存 DB ではインストール変数を変えても認証情報はリセットされません。

ページを見る