投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2018年11月23日金曜日

【Linux CentOS 7】Dockerイメージを圧縮ファイルに保存して別のホストにコピーし復元した【Docker-ce 18.06.1.ce】

下記では、Dockerイメージ移動元、移動先の両ホストは、CentOS7を利用している。

また、Dockerのインストールは、「【Linux CentOS 7】Dockerをyumでインストールする手順と簡単な動作テスト【Docker-ce 18.06.1.ce】」の手順で行った。



■Dockerイメージを圧縮してファイルに保存

○イメージ一覧

次のDockerイメージが存在している。これを圧縮してファイルに保存する。
# docker image list
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
image-centos7-popfile-20181122     latest              341bbc5d6f87        30 hours ago        1.09GB
1GB程度ある。


○圧縮してファイルに保存

# docker save image-centos7-popfile-20181122 | gzip > image-centos7-popfile-20181122.tgz
(c.f.)圧縮しない場合は、-oオプションで直接出力ファイル名を指定する。
# docker save -o image-name.tar image-name

# ls -l
-rw-r--r--   1 root root  370858897 11月 22 17:34 image-centos7-popfile-20181122.tgz

約1GBが、370MB程度に圧縮された。



■ファイルに保存済みのイメージを別のDockerホストに復元

○生成した圧縮ファイルを別のDockerホストにコピーした。

# scp -P 22 image-centos7-popfile-20181122.tgz root@192.168.20.3:/root/

<意味>
-P 22 SSHポート番号を明示的に指定する。
image-centos7-popfile-20181122.tgz 送信するファイル
root@192.168.20.3:/root/ 送信先ホスト(rootはログインユーザー)とそこのディレクトリ

ちなみに、フォルダごとコピーしたい場合は、scp -r とすればよい。
例えば、カレントディレクトリ内にあるimage-folderを、リモートの/rootディレクトリ内にコピーする。
# scp -r -P 22 image-folder root@192.168.20.3:/root/

-p というオプション(小文字)を指定すれば、ファイル属性をオリジナルのままにすることができる。



○コピー先の別のDockerホスト側で、イメージを圧縮ファイルからロードした。

コピー先とした別のDockerホストのコンソールを表示した。

ファイルの確認
[root@another ~]# ls image*
image-centos7-popfile-20181122.tgz

イメージを圧縮ファイルからロード
[root@another ~]# gunzip -c image-centos7-popfile-20181122.tgz | docker load
1d31b5806ba4: Loading layer [==================================================>]  208.3MB/208.3MB
3c544c486d65: Loading layer [==================================================>]  150.5MB/150.5MB
ad7894c4b1ef: Loading layer [==================================================>]  115.6MB/115.6MB
2331b5983314: Loading layer [==================================================>]  106.2MB/106.2MB
9ae5363d1828: Loading layer [==================================================>]  530.4MB/530.4MB
Loaded image: image-centos7-popfile-20181122:latest

(c.f)圧縮ファイルでなく普通のtarファイルの場合、-i オプションでファイルを指定する。
# docker load -i image-name.tar


イメージの一覧表示
# docker image list
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
image-centos7-popfile-20181122   latest              341bbc5d6f87        31 hours ago        1.09GB
hello-world                      latest              4ab4c602aa5e        2 months ago        1.84kB
確かにロードされた。
また、無事にこのイメージからコンテナをrunさせることができた。

このようにDockerは、動作環境を「ファイル」として丸ごと出力し別のホストへ移動できるのでとても便利だ。



<参考>
・Docker: save/load container using tgz file (tar.gz)
< https://codepad.co/snippet/hh8FztUc > 2018年11月23日

・docker save
< https://docs.docker.com/engine/reference/commandline/save/ > 2018年11月23日

・docker load
< https://docs.docker.com/engine/reference/commandline/load/ > 2018年11月23日

・Docker Tutorial 4: Exporting Container and Saving Image
< https://medium.com/@sh.tsang/docker-tutorial-4-exporting-container-and-saving-image-c3a7d792cfb6 > 2018年11月23日

・How to copy a folder from remote to local using scp? [closed]
< https://stackoverflow.com/questions/11304895/how-to-copy-a-folder-from-remote-to-local-using-scp > 2019年7月1日

・How to preserve files original creation date?
< https://stackoverflow.com/questions/20255368/how-to-preserve-files-original-creation-date > 2020年8月8日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad