ファイルからコンテナイメージを作成

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でも問題ないようである。

以上。

■ 関連