Docker Desktopで使用していたDockerボリュームをUbuntu on WSL2で動かすDockerサービスに移したかったので方法をメモ。
対象コンテナとボリュームの確認
Dockerの実行中のコンテナを確認。NAMESが「mysqld」のコンテナが対象コンテナ。
>docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                  NAMES
6160e4d8eaf0   wordpress:latest   "docker-entrypoint.s…"   11 minutes ago   Up 12 minutes   0.0.0.0:5000->80/tcp   wordpress
ff1d8befec31   mysql:5.7          "docker-entrypoint.s…"   12 minutes ago   Up 12 minutes   3306/tcp, 33060/tcp    mysqldDockerボリュームを確認。「ubuntu_db-store」が今回バックアップする対象ボリューム。
>docker volume ls
DRIVER    VOLUME NAME
local     ubuntu_db-storeボリュームのバックアップ
バックアップ用のコンテナを作成
バックアップ対象のボリュームをマウントした使い捨てコンテナを作成して、ホストと共有しているディレクトリへバックアップファイルを作成します。
docker run --rm --volumes-from mysqld -v ${PWD}:/backup busybox tar cvf /backup/backup.tar /var/lib/mysql
これを実行すると「var/lib/mysql/」は以下のファイルリストが表示され、これらのファイルが「backup.tar」としてまとめられてカレントディレクトリに作成されます。
ボリュームのリストア
リストア先のコンテナを起動しておく
$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                   NAMES
c09e1c28fb0b   wordpress:latest   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:5000->80/tcp, :::5000->80/tcp   wordpress
5530c9d08346   mysql:5.7          "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   3306/tcp, 33060/tcp            mysqldリストア用のコンテナ作成
リストア対象のコンテナのボリュームをマウントして、カレントディレクトリをバインドマウントし、その中にある「backup.tar」を解凍してリストア対象のボリュームにリストアします。
docker run --rm --volumes-from mysqld -v ${PWD}:/backup busybox tar xvf /backup/backup.tar
      
  
  
  
  

Comments