Help us understand the problem. What is going on with this article?

【Docker】データボリュームをバックアップ→リストア

データが入ったDBがあると仮定して話を進めます。

ボリュームと紐づいているコンテナの名前を確認

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7b6a79314721        sample-app_web       "/bin/sh -c 'rm -f t…"   5 minutes ago       Up 5 minutes        0.0.0.0:3000->3000/tcp   sample-app_web_1
2ed21c2aac12        postgres            "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:5434->5432/tcp   sample-app_db_1

NAMESを参照。今回の場合はsample-app_db_1

コンテナをストップ

$ docker-compose stop

バックアップ

docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar cvf /backup/backup.tar /var/lib/postgresql/data

Postgresqlの場合の例です。
sample-app_db_1の部分に、先ほどのステップで確認したコンテナ名を設定
mysplの場合/var/lib/postgresql/dataの部分を/var/lib/mysqlに変更

(mysqlの場合)
$ docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar cvf /backup/backup.tar /var/lib/mysql

コンテナとボリュームを削除→コンテナを再作成

$ docker-compose down --volumes
$ docker-compose up -d

コンテナをストップ

$ docker-compose stop

リストア

$ docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar xvf /backup/backup.tar

(mysqlの場合)

同じ
$ docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar xvf /backup/backup.tar

最後に

本当はこの方法より、SQLによるダンプでバックアップを取るほうが望ましいらしいです。

まだ検証できていないので、興味がある方はご自身で調べてみてください。

参考

d0ne1s
Qiitaの記事検索サービス【Qiigle】を運営。 フリーランスエンジニア。Ruby on Rails、Tailwind CSS、Heroku、Cloudflareが好き。少ない人数で高速で開発することに強い関心があります。ちょっとした情報はTwitterで🦈
https://twitter.com/d0ne1s
admin-guild
「Webサービスの運営に必要なあらゆる知見」を共有できる場として作られた、運営者のためのコミュニティです。
https://admin-guild.slack.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away