Docker学習ノートのdocker-save vs docker-export vs docker-commit

4546 ワード

この前はこのいくつかのcommandを忘れて覚えていたので、メモを书いて固めました.

1.docker save

docker save -h

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

  --help             Print usage
  -o, --output       Write to a file, instead of STDOUT

接するパラメータから推測すると,imageに直接接すると,単純なファイルシステムを導出することは不可能である(ミラー自体が階層的に格納されているため)
簡単にテストして
docker save -o busybox.tar busybox && mkdir busybox && tar xf busybox.tar -C busybox
tree busybox
busybox
├── 2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749.json
├── 374004614a75c2c4afd41a3050b5217e282155eb1eb7b4ce8f22aa9f4b17ee57
│   ├── VERSION
│   ├── json
│   └── layer.tar
├── manifest.json
└── repositories

docker loadはこれに一致し、docker imagesにインポートします(履歴付き)
docker load -i busybox.tar

 

2.docker export

docker export -h
Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

  --help             Print usage
  -o, --output       Write to a file, instead of STDOUT

接のパラメータから推測すると、直接containerに接するのは、多分dump rootfsです.
栗を試してみます.
docker run --name container -d busybox
docker export -o busybox.tar container && mkdir busybox && tar xf busybox.tar -C busybox
tree busybox -L 1
busybox
├── bin
├── dev
├── etc
├── home
├── proc
├── root
├── sys
├── tmp
├── usr
└── var

docker importとマッチング
docker import busybox.tar my-busybox:1.0
docker images
# REPOSITORY     TAG    IMAGE ID            CREATED             SIZE
# my-busybox     1.0   5bfea374dd5c        3 seconds ago       1.093 MB

注:docker importの後ろにはdocker exportがエクスポートしたファイル、つまりファイルシステムが接続されているので、インポートしたミラーは履歴なしでdocker history$image_を使用します.nameミラーを表示するレイヤは1つしかありません
 

3.docker commit

docker commit -h       /tmp/pkg_debian (debian) choldrim-pc

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

  -a, --author        Author (e.g., "John Hannibal Smith ")
  -c, --change=[]     Apply Dockerfile instruction to the created image
  --help              Print usage
  -m, --message       Commit message
  -p, --pause=true    Pause container during commit

commitはsave、load、export、importのいくつかの特性を統合した総合的なコマンドで、主に次のようにします.
  • container現在の読み書きレイヤを保存し、新しいレイヤ
  • に保存する
  • は、ミラーの履歴レイヤとともに、新しいミラー
  • に統合される.
    元のミラーが3層ある場合、commitの後に4層あり、最新のレイヤはミラー実行からcommitまでのファイルシステムの変更です
    docker commit container my-commit-image
    docker history my-commit-image
    IMAGE          CREATED            CREATED BY                                      SIZE       COMMENT
    e86539128c67   5 seconds ago       sh                                              0 B                 
    2b8fd9751c4c   9 weeks ago         /bin/sh -c #(nop) CMD ["sh"]                    0 B                 
          9 weeks ago         /bin/sh -c #(nop) ADD file:9ca60502d646bdd815   1.093 MB

     

    リファレンス


     
    転載先:https://www.cnblogs.com/JetpropelledSnake/p/10518004.html