dockerコンテナをバックアップ・保存・ロードしたりする方法
dev環境で構築したコンテナをそのままstgとprd環境に移行したいと目論んでいます。
というわけで、dockerで作成したコンテナのバックアップを保存したり、別の環境で読み込む方法を試しました。手順をまとめます。
コンテナをバックアップする方法
コンテナをバックアップする方法は2つあります。
docker save
を使う方法と、 docker export
コマンドを使う方法です。
docker saveでバックアップする場合の手順
次の順にコマンドを実行します。
- コンテナをimageに落とし込んで(commit)
- imageをtarファイルに圧縮(save)
- 別の環境でtarファイルをロード(load)
docker save
を使う場合、一旦コンテナをイメージとして保存する必要があります。
docker commitでコンテナをイメージに変換
下記コマンドで、指定したコンテナをイメージに変換します。
docker commit YOUR_CONTAINER_ID NAME
#例
docker commit b2d hoda/centos:ver2
YOUR_CONTAINER_ID … イメージに変換したいコンテナのID
NAME … イメージにつける名前。好きに決めます。
コンテナのIDは docker ps
または docker ps -a
コマンドで確認します。
docker saveでイメージを保存
指定したイメージをtarファイルに圧縮して保存します。
docker save YOUR_CONTAINER_IMAGE(repository:tag) > NAME
#例
docker save hoda/centos:ver2 > hoda_centos.tar
YOUR_CONTAINER_IMAGE … docker commit
で変換したイメージを「Repository:Tag」の形式で指定します。
NAME … 好きな名前をつけます。
RepositoryとTagの情報は docker images
コマンドで確認します。
docker loadで読み込む
tarファイルの読み込み。これでイメージファイルがリストアされます。
docker load < PATH
#例
docker load < /Users/hogehoge/hoda_centos.tar
docker exportでバックアップする場合の手順
docker exportは、docker importと対で使います。
手順は次の通りです。
- コンテナをtarファイルに圧縮(export)
- 別の環境でtarファイルをインポート(import)
docker exportでコンテナを出力
docker export YOUR_CONTAINER_ID > NAME
docker importでコンテナファイルを読み込む
docker import < hogehoge.tar - IMAGE_NAME:TAG
#例
docker import < hoda_ubuntu.tar - hoda/centos:latest
importしたイメージを起動する時はコマンドを指定する必要があるので注意です。
#例1
docker run -it /Users/hogehoge/hoda_centos.tar /sbin/init
#例2
docker run -it /Users/hogehoge/hoda_ubuntu.tar /bin/bash
まとめ
これで全く同じ環境をdev, stg, prdで揃えることができますね〜。