

dockerのイメージを縮小したいと思っています。

[code]

    test/i386-ubuntu         1.1.4               86ce872ce959        3 days ago          8.682 GB
    test/i386-ubuntu         1.1.3               7f25a5c2b7ee        3 days ago          7.284 GB
    test/i386-ubuntu         1.1.2               a8177a2a57ea        3 days ago          2.012 GB
    test/i386-ubuntu         1.1.1               58ff7a098c5f        3 days ago          381.7 MB
    
[/code]

上記4つのイメージは階層構造になっています。この1.1.4から不要ファイルを削除して新たなイメージで縮小したいと考えています。  
docker
exportだとメタファイルは削除されるという記事も見ました。このメタファイルというのが何を指すのかよく理解していませんが、意図しないファイルが消えることは避けたいと思っています。

どうすればイメージをまとめダイエットしたイメージが作成できるのでしょうか？  
ご存知の方、メタファイルようなファイルを言っているのかとあわせ、ご教示お願います。


CC BY-SA 3.0
2016-11-20T13:48:25.887
30557
2016-11-23T18:00:11.337
8593
question
docker
dockerのイメージを縮小するには


小さいDockerイメージを作る最良の方法は、Alpine
LinuxやBusyBox等の小さいベースイメージに必要最小限の変更を加えたイメージをビルドしなおすことです。  
けど多分これはやりたいことではないでしょうから、別の方法を挙げます。

Dockerイメージのサイズが大きくなる原因はレイヤー数の増加です。  
`test/i386-ubuntu:1.1.4`は`1.1.1`からレイヤーを重ねているためサイズが大きくなっています。  
このイメージの上で何をしようともサイズが小さくなることはありません。

サイズを小さくするには、レイヤーをまとめて一階層にした新しいイメージを作るしかないと思います。  
レイヤーをまとめる機能はまだDockerにはありません。  
[PR #13929](https://github.com/docker/docker/pull/13929)や[PR
#4232](https://github.com/docker/docker/pull/4232)で提案されましたが、却下されたようです。  
[PR #22641](https://github.com/docker/docker/pull/22641)は`docker
build`に`--squash`というオプションを加えるもので、すでにマージされていますし、  
レイヤーをまとめるのに使えそうですが、まだリリースされていないようです。

サードパーティ製の[docker-flatten](https://github.com/dqminh/docker-flatten)や[docker-
squash  
](https://github.com/jwilder/docker-squash)がありますが、利用は自己責任でということになります。

ほかには`docker export`と`docker import`を使う方法があります。

[code]

    docker export <コンテナ ID> | docker import - <イメージ名>:<タグ>
    
[/code]

ただしこれをやると、`docker build`(Dockerfile)でイメージに付与した属性が消えてしまいます。  
例えば`VOLUME`、`EXPOSE`、`ENV`などです。保持されるのはファイルシステムだけと考えておけばいいと思います。

`docker export`の対象はイメージではなくコンテナである点に注意してください。  
イメージを対象とした似たコマンドに`docker save`/`docker
load`がありますが、これはレイヤーをまとめず保持するのでイメージサイズ縮小には使えません。

`docker export`前に、コンテナ内で不要なファイルやパッケージを削除したり、`apt-get
clean`でキャッシュを削除しておくと、より小さいイメージを作れます。


CC BY-SA 3.0
2016-11-21T08:26:21.903
30572
2016-11-23T18:00:11.337
2016-11-23T18:00:11.337
19437
19437
30557
answer