先日初めてDockerに触れ、環境を複製する際に色々調べたのでその内容を共有するため図を作りました。
オプションなど含めた実際利用するコマンド一覧については@voluntasさんの下記の記事がおすすめです。
環境複製の手順
環境を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イメージからrun
かcreate
で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についても調べてまとめたいな。