コンテナをファイル出力

Dockerにおいて表題の通り。

■ 環境

  • Docker for Mac 1.12-0-rc2-beta16
  • Mac OSX El Capitan

■ きっかけ

他のユーザやマシン間でコンテナのやりとりをしたい場合はDockerHubを使うのが楽ではあるのだが、今回はコンテナのサイズが大き過ぎたのもあるのかTimedOutしてDockerHubにアップロードできなかった。アップロードに時間が掛かるのもあり、何度もリトライをするのは面倒なので`docker export`でファイルに出力し、そのファイルをやり取りするようにしようと方向転換。

■ export

`export`のヘルプは下記の通り。

$ docker export -h
Flag shorthand -h has been deprecated, please use --help

Usage:    docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
      --help            Print usage
  -o, --output string   Write to a file, instead of STDOUT
$

とりあえず実行してみる。対象のコンテナ名称は”exptest“としている。

$ docker export exptest
Cowardly refusing to save to a terminal. Use the -o flag or redirect.
$

“-o“オプションを使用するか、リダイレクトしろとのこと。再度挑戦。

$ docker export exptest > exptest.tar

時間がそれなりに掛かったが上記でexportできた。ちなみに”-o“オプションも試してみた。

$ docker export -o exptest2.tar exptest

これらでできた2つのファイルのサイズとmd5の結果を見てみる。

$ ls -l
  :
-rw-r--r--   1 withsin  staff  1087947264  6 27 19:11 exptest.tar
-rw-------   1 withsin  staff  1087947264  6 27 19:22 exptest2.tar
$
$ md5 exptest.tar
MD5 (exptest.tar) = c252c44d543ebbe81befe7c35d7e1966
$
$ md5 exptest2.tar
MD5 (exptest2.tar) = c252c44d543ebbe81befe7c35d7e1966
$

同じ結果となっている。満足。

以上。

■ 関連