Dockerにおいて表題の通り。先日作成したtarファイルからコンテナを復元する。
■ 環境
- Docker for Mac 1.12.0-rc2-beta16
- Mac OSX El Capitan
■ export
今回`import`するコンテナは、先日の下記エントリで`export`したコンテナである。
作成したファイルは下記の通り。
$ ls -l exptest.tar
-rw-r--r-- 1 withsin staff 1087947264 6 27 19:11 exptest.tar
$
$ tar tf exptest.tar | head
.dockerenv
bin/
bin/ash
bin/base64
bin/bash
bin/bashbug
bin/bbconfig
bin/busybox
bin/cat
bin/catv
:
$
tarファイルの中身を見てみると、そのまんまファイルシステムを固めたものであるようだ。
■ import
`import`のヘルプは下記の通り。
$ docker import -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Options:
-c, --change value Apply Dockerfile instruction to the created image (default [])
--help Print usage
-m, --message string Set commit message for imported image
$
tarファイルをそのまま渡せばいけるのであろう。早速試してみる。`import`後のコンテナイメージの名称は”imptest“とする。
$ docker import exptest.tar imptest
sha256:c2b5273bdaaf504f23a6f71d4c6181cad611504110949a9166a8ffecb4795b6a
$
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imptest latest c2b5273bdaaf 14 minutes ago 1.07 GB
:
$
`import`ができた。この新しいコンテナイメージを元に起動して問題なく動作すれば復元は完了である。
ちなみに、下記の方法もやってみた。
$ tar xf exptest.tar | docker import - imptest2
usr/share/terminfo/l/lft-pc850: Can't create 'usr/share/terminfo/l/lft-pc850'
usr/share/terminfo/n/ncr260vt300wpp: Can't create 'usr/share/terminfo/n/ncr260vt300wpp'
:
tar: Error exit delayed from previous errors.
sha256:7d8b45d5f77e59eb971687481108e395b2f8812f748bfd0c5f770c883c99910d
$
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imptest2 latest 7d8b45d5f77e 22 seconds ago 0 B
:
$
同じファイルから`import`したのにエラーとなってしまった。何故だろう?
再度ちなみに、になってしまうが、下記でもOKであった。
$ gzip exptest.tar
$
$ docker import exptest.tar.gz imptest3
sha256:14bd8c87a2e5942617de7019b130532dcb2d7fd036fe4e156e5618ec4a9ce5a4
$
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imptest3 latest 14bd8c87a2e5 About a minute ago 1.07 GB
:
$
gzipでも問題ないようである。
以上。