dockerコンテナをバックアップ・保存・ロードしたりする方法

dev環境で構築したコンテナをそのままstgとprd環境に移行したいと目論んでいます。

というわけで、dockerで作成したコンテナのバックアップを保存したり、別の環境で読み込む方法を試しました。手順をまとめます。

コンテナをバックアップする方法

コンテナをバックアップする方法は2つあります。

docker save を使う方法と、 docker export コマンドを使う方法です。

docker saveでバックアップする場合の手順

次の順にコマンドを実行します。

  1. コンテナをimageに落とし込んで(commit)
  2. imageをtarファイルに圧縮(save)
  3. 別の環境で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_IMAGEdocker 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と対で使います。

手順は次の通りです。

  1. コンテナをtarファイルに圧縮(export)
  2. 別の環境でtarファイルをインポート(import)

docker exportでコンテナを出力

docker export YOUR_CONTAINER_ID > NAME


#例

docker export b2d > hoda_centos.tar

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で揃えることができますね〜。