【Docker基礎】イメージを持ち運ぶには(saveコマンド)

 コンテナを“そのまま”コピーすることはできませんが、いったんイメージ化しておけば、別の環境へ移動・配布する方法がいくつかあります。そのうち、Docker レジストリを使わないでやり取りしたい場面では「docker save」コマンドが便利です。これを使うと、イメージを tar ファイルとして書き出し、ホストにファイルとして保管できます。

なぜ「docker save」が必要なのか?

  • Docker レジストリ を経由しなくても、オフラインでイメージを受け渡しできる
  • ネットワーク環境が限られている場合や、社内ルールで外部レジストリを使えない場合に最適
  • エアギャップ環境(インターネットにつながらない場所)にもイメージを持ち込める

コマンドの基本

docker save -o <ファイル名.tar> <イメージ名>
  • -o <ファイル名.tar> : 出力先のファイル名を指定(.tar 形式が主流)
  • イメージ名 : 書き出したいイメージ(例: myapp:1.0 など)

tar ファイルを作成

docker save -o myapp.tar myapp:1.0
  1. myapp:1.0 というイメージを
  2. ホストに myapp.tar として書き出す

 ファイル作成後、myapp.tar がホスト側に存在し、これを USBメモリファイル共有 などで別のマシンへ持ち運び可能です。

受け取ったファイルをイメージとして取り込む(load)

書き出した tar ファイルを Docker 環境 に読み込むには docker load を使います。

docker load -i myapp.tar
  • -i : インプットファイルとして .tar を指定
  • 成功すると Loaded image: myapp:1.0 のようなメッセージが表示され、 docker image lsmyapp:1.0 が追加されます。

まとめ

  • コンテナ自体はコピーできない → まず「自作イメージ」にして、 docker save で書き出す
  • docker save : イメージを .tar ファイルとしてエクスポート
  • docker load : .tar ファイルをイメージとしてインポート
  • 用途 : インターネットのない場所、社内環境、機密環境などでイメージを受け渡ししたい時に便利

 次のコンテンツでは、「コンテナの改造」について解説します。コンテナ内で作業した内容をどう整理し、イメージに反映するか、といった高度なテクニックを見ていきましょう。