Edited at

Docker ライフサイクル 概要図 & 環境複製手順

More than 1 year has passed since last update.

先日初めてDockerに触れ、環境を複製する際に色々調べたのでその内容を共有するため図を作りました。

オプションなど含めた実際利用するコマンド一覧については@voluntasさんの下記の記事がおすすめです。

docker コマンド チートシート


環境複製の手順

環境を1つのサーバーから別サーバーにまるっと複製する場合は、下記手順でうまくいきました。


作業したコンテナからcommitでDockerイメージを作成

$ sudo docker commit <your_container> <your_new_image>


Dockerイメージをsaveでtarファイル化し新環境にコピー

$ sudo docker save -o image_backup.tar <your_new_image>


新環境でtarファイル化されたDockerイメージをloadしDockerイメージ化

$ sudo load -i image_backup.tar


そのDockerイメージからruncreateでContainer生成

$ sudo docker run -it --name <new_container> -p 8000:8000 <your_new_image>


ボリュームを使ってる場合旧環境で*1コマンドを実行しボリュームをtarファイル化

$ sudo docker run --rm --volumes-from <old_container> -v $(pwd):/backup busybox tar cvf /backup/backup.tar <volume_path>


新環境でtarファイル化したボリュームから*2コマンドでリストア

$ sudo docker stop <new_container>

<new_container>
$ sudo docker run --rm --volumes-from <new_container> -v $(pwd):/backup busybox tar xvf /backup/backup.tar

DockerコンテナとDockerボリュームの関係性でつまづきました。コンテナをcommitすればすべてバックアップされるものかと思っていましたが、そうではなくボリュームでマウントされた保存領域はホストOS内で指定したディレクトリで別途バックアップ&リストアが必要な点でした。そしてVolumeをバックアップ&リストアするためのコマンドが特に用意されていない……

そのうちDockerfileやDocker Composeについても調べてまとめたいな。