docker exportコマンドの使い方(実例で解説)

docker exportコマンド解説

 本記事はDocker ver24.0.7の環境で確認しています。

 このコマンドは、コンテナ内のファイルをtar形式で出力することが出来ます。

 出力先は、tarファイルと標準出力の2種類です。

 出力したtarファイルは、docker importコマンドを使用して、Dockerイメージを作成することが可能です。

docker exportコマンドのフォーマットとオプション

フォーマット

docker export [オプション] [コンテナ]

主なオプション一覧

オプション概説
-o, --output=""指定したファイルに出力する

コマンド例

$ docker export testvm > testvm.tar
$ docker export -o testvm-2.tar testvm

docker exportコマンドの主な使い方

 以下で実例をまじえたコマンドの使い方を解説していきたいと思います。

実例では、Ubuntuの公式イメージにより起動したコンテナ(testvm)を使用します。

コンテナは「docker run -dit --init --name testvm ubuntu」で起動します。

※「--rm」オプションを付けておりませんので、ご利用後はコンテナ削除をお忘れなく。

基本事項の解説

 docker exportコマンドは、コンテナ内のファイルをtarファイルに出力します。

 対象コンテナが起動中でも停止中でも、docker exportコマンドを実行することができます。

 出力したtarファイルをコンテナのバックアップとして利用するのでしたら、コンテナが停止中のほうが都合が良いでしょう。

docker exportコマンドにてtar形式で出力されるのは、コンテナ内のファイルのみで、データボリューム(コンテナ起動時に-vオプションで指定した領域やDockerfileにてVOLUME指定した領域など)は対象外です。ご注意下さい。

コンテナ内のファイルをtar形式で出力する

 検証用のコンテナを起動して、コンテナ内にファイルを作成して、そのコンテナの内容をdocker exportコマンドを使用してtar形式で出力してみます。

 以下の起動中のコンテナがあります。

$ docker ps
CONTAINER ID  IMAGE   COMMAND      CREATED             STATUS
 PORTS  NAMES
09b4ef7cfd1b  ubuntu  "/bin/bash"  About a minute ago  Up About a minute
        testvm

 まず、このコンテナのルートディレクトリ上に、ファイル「test-vm.txt」を作成します。

$ docker exec testvm touch /test-vm.txt
$ docker exec testvm ls -l /test-vm.txt
-rw-r--r-- 1 root root 0 Oct 29 03:07 /test-vm.txt

 docker exportコマンドでコンテナの内容をtarファイルに出力してみましょう。

 コンテナtestvm内のファイルを標準出力経由でファイルにリダイレクトして出力します。

$ docker export testvm > testvm.tar

 以下のコマンドで、出力したtarファイルの中に、作成したファイルtest-vm.txtが存在することを確認します。

$ tar tvf testvm.tar | grep test-vm.txt
-rw-r--r-- 0/0      0 2016-10-29 12:07 test-vm.txt

 docker exportコマンドにて出力したtarファイル内に、事前に作成したファイルtest-vm.txtが含まれていることが確認できました。

コンテナ内のファイルをtarファイルに直接出力する

 オプションを付けずにdocker exportコマンドを実行した場合の出力先は標準出力ですが、「-o」オプションでファイルを指定することにより、指定したファイルに直接出力することが出来ます。

 docker exportコマンドにて、コンテナtestvm内のファイルを、testvm-2.tarファイルに直接出力する場合は、以下を実行します。

$ docker export -o testvm-2.tar testvm

おわりに

  以上でdocker exportコマンドの紹介を終わります。

 ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。

 他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerコマンドの一覧(オリジナルな実例付き)」をご参照ください。

 ご訪問ありがとうございました!

コメント