2016-11-24 9 views
0

最も簡単な質問のように私は答えを見つけることができません。新しい画像を作成せずにドッカー画像をアップグレードするにはどうすればよいですか?

  1. 私はドッカー画像を作成します。
  2. run docker imagesは、それが存在することを示します。
  3. 次に、Dockerファイルに新しい行を追加します。
  4. 次に、イメージを再構築します。
  5. 古い画像はまだdocker imagesにあり、新しい画像があります。

新しい画像を作成せずに古い画像を更新するにはどうすればよいですか?

マイドッキングウィンドウのコマンド: docker build -t nick_app . --force-rm --no-cache

(注:うまくいくように思えたので、私はちょうど「それら--force-rmコマンドと--no-キャッシュコマンドを投げ)

前に:

Dockerfile:

FROM ruby:2.3.3 
RUN apt-get update -qq && apt-get install -y 
CMD ["echo", "Sup"] 

ドッカ画像コマンド:

REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
nick_app   latest    421662154c3f  9 minutes ago  746.9 MB 
ruby    2.3.3    d00ebde6a601  2 days ago    730.1 MB 
hello-world   latest    c54a2cc56cbb  4 months ago   1.848 kB 

: Dockerfile:

FROM ruby:2.3.3 
RUN apt-get update -qq && apt-get install -y \ 
    build-essential 
CMD ["echo", "Sup"] 

ドッキングウィンドウのイメージがコマンド:

REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
nick_app   latest    bcf9b3667202  3 seconds ago  746.9 MB 
<none>    <none>    421662154c3f  10 minutes ago  746.9 MB 
ruby    2.3.3    d00ebde6a601  2 days ago   730.1 MB 
hello-world   latest    c54a2cc56cbb  4 months ago  1.848 kB 

を私が作るあらゆるdockerfile変更は、再構築に新しいnoneイメージを作成します。それらは累積的なので、私が変更を加えて再構築するたびに別のイメージが得られますnoneイメージ。

ドッカーファイルを変更するたびに、どのようにその中間を取り除くのですか?none

+0

は、あなたがイメージの新しいバージョンを作成しているので、何が起こっていることは理にかなっています。あなたは 'docker build'の代わりに直接呼び出すbashスクリプト(答えにコマンドを表示)を何らかの方法でラップする必要があります。 – Arran

+0

私はテキストファイルに変更を加えると技術的には新しいバージョンのテキストファイルですが、ワードプロセッサは中間ファイルを作成せずに新しいテキストファイルの更新を処理するという意味になります。 これはDockerアプリケーションの覗き見に役立つかもしれません:同じタグで再構築した場合、同じイメージになり、すべての中間体/古いバージョンが削除されると仮定します。 –

答えて

4

これらの<none>:<none>は、実際にアプリケーションの古いバージョンであり、nick_app:latestを新しいビルドに移動したために、名前付きポインタが失われています。

イメージを構築するときに、古いイメージを破壊するように指示することはできないと考えています。新しいイメージを作成するだけです。 しかし、あなたがそれらのダングリングの画像を一覧表示または削除することができますコマンドがあります:すべての後に

docker images --filter dangling=true #lists all images that are dangling and has no pointer to it 
docker rmi `docker images --filter dangling=true -q` #Removes all those images. 
+0

情報ありがとうございます。 これを自動的に行うためのフラグやオプションがないことを歓迎しません。 これはかなり一般的な使用例のようです。 私はショートカット 'docker rmi $(ドッカー画像-f" dangling = true "-q)' を持っていますが、これを行うたびにこれを行う必要があります。 –

関連する問題