0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLコンテナを別PCへ移植する手順メモ

0
Posted at

前提確認

docker inspect --format '{{.Mounts}}' で /var/lib/mysql がボリューム/バインドになっているか確認。
Source が /var/lib/docker/volumes/.../_data やホストパスならデータはボリューム側で、docker commit では持ち出せない。

元PC: ボリュームをバックアップ

例(元コンテナのボリューム名が aaaa...bbbb の場合):

docker run --rm \
  -v aaaaxxxxbbbb:/v \
  -v "$PWD":/out \
  alpine sh -c "cd /v && tar czf /out/mysql_volume.tgz ."

このコマンドを分解すると、

  1. docker run --rm ... alpine ...: 一時的に Alpine Linux コンテナを起動し、終了後コンテナを自動削除。
  2. -v aaaaxxxxbbbb:/v: 元の MySQL データが入っている Docker ボリュームをコンテナ内 /v にマウント。
  3. -v "$PWD":/out: 現在のホスト作業ディレクトリをコンテナ内 /out にマウント(できあがったファイルをホスト側に書き出すため)。
  4. sh -c "cd /v && tar czf /out/mysql_volume.tgz .": コンテナ内でシェルを実行。
  • cd /v: マウントしたボリュームの中へ移動。
  • tar czf /out/mysql_volume.tgz .: ボリューム内の全内容を gzip 圧縮した tar (.tgz) にまとめ、マウントされた /out(=ホストのカレントディレクトリ)へ mysql_volume.tgz という名前で出力。

5.結果: 指定ボリュームの中身がホスト側に mysql_volume.tgz として保存される。

元PC: コンテナをイメージ化しTarで持ち出す

docker commit <container_name> <image_name>
docker save -o mysql_image.tar <image_name>

新PC: イメージとデータを復元

イメージをロード:

docker load -i mysql_image.tar

ボリュームを作成しデータ展開:

docker volume create mysql-data
docker run --rm -v mysql-data:/v -v "$PWD":/in alpine sh -c "cd /v && tar xzf /in/mysql_volume.tgz"

新PC: コンテナ起動

docker run -d --name my-mysql -v mysql-data:/var/lib/mysql <image_name>:latest

初期化済みデータを持ち込んでいるため MYSQL_ROOT_PASSWORD は指定不要・無視され、元のパスワードでログイン可能。

動作確認と備え

  • docker logs my-mysql で起動時エラーがないか確認。
  • docker exec -it my-mysql bash で入り mysql -u root -p などでログイン確認。
  • 念のため mysqldump で新環境のバックアップを取得。
  • 再起動テスト: docker restart my-mysql で問題ないか確認。

まとめ

  • MySQLデータがボリューム/バインドなら docker commit に含まれない。必ずボリューム中身をコピーする。
  • 初回起動時のみ MYSQL_ROOT_PASSWORD が必要。既存データを復元する場合は元のパスワードが有効。
  • データ移行は「イメージ(ソフト)+ボリューム(データ)」の両方をセットで持っていくのが安全。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?