dockerキャッシュを使用せずにミラーを再構築

2445 ワード

Dockerfileを使用してミラーを構築すると、そのキャッシュ機能が利用できます.コマンドが変更された場合にのみ、構築されたステップが再構築されます.次に、再構築前に関連したto-do appの例を示します.
$ docker build .
Sending build context to Docker daemon  2.56 kB
Sending build context to Docker daemon
Step 0 : FROM node
  ---> 91cbcf796c2c
Step 1 : MAINTAINER [email protected]
 ---> Using cache
Indicates you’re using the cache
Specifies the cached image/layer ID
   ---> 8f5a8a3d9240
Step 2 : RUN git clone -q https://github.com/docker-in-practice/todo.git
 ---> Using cache
 ---> 48db97331aa2
Step 3 : WORKDIR todo
 ---> Using cache
 ---> c5c85db751d6
Step 4 : RUN npm install > /dev/null
 ---> Using cache
 ---> be943c45c55b
Step 5 : EXPOSE 8000
 ---> Using cache
 ---> 805b18d28a65
Step 6 : CMD npm start
 ---> Using cache
 ---> 19525d4ec794
Successfully built 19525d4ec794

キャッシュは非常に役に立ち、時間を節約しますが、dockerキャッシュの動作が期待に達しない場合があります.上記のDockerfileを例として、コードを変更してGit倉庫にpushしたとします.git cloneコマンドが変更されていないため、新しいコードはチェックアウトされません.Dockerではgit cloneの手順が同じように見えるのでキャッシュを使用しました.この場合、dockerのキャッシュを開きたくないかもしれません.
に質問
キャッシュを使わずにDockerfileを再構築したいと思います.
解決策
ミラーを構築するときに--no-cacheパラメータを使用します.
ディスカッション
dockerにミラーを構築するときにキャッシュを使用しないように強制するには、-no-cacheパラメータ付きdocker buildコマンドを実行します.次の例では、–no-cacheを使用してミラーを構築します.
$ docker build --no-cache .
Sending build context to Docker daemon  2.56 kB
Sending build context to Docker daemon
Step 0 : FROM node
 ---> 91cbcf796c2c
Step 1 : MAINTAINER [email protected]
 ---> Running in ca243b77f6a1
 ---> 602f1294d7f1
Removing intermediate container ca243b77f6a1
Step 2 : RUN git clone -q https://github.com/docker-in-practice/todo.git
 ---> Running in f2c0ac021247
 ---> 04ee24faaf18
Removing intermediate container f2c0ac021247
Step 3 : WORKDIR todo
 ---> Running in c2d9cd32c182
 ---> 4e0029de9074
Removing intermediate container c2d9cd32c182
Step 4 : RUN npm install > /dev/null
 ---> Running in 79122dbf9e52
npm WARN package.json [email protected] No repository field.
 ---> 9b6531f2036a
Removing intermediate container 79122dbf9e52
Step 5 : EXPOSE 8000
 ---> Running in d1d58e1c4b15
 ---> f7c1b9151108
Removing intermediate container d1d58e1c4b15
Step 6 : CMD npm start
 ---> Running in 697713ebb185
 ---> 74f9ad384859
Removing intermediate container 697713ebb185
Successfully built 74f9ad384859

以上のビルドミラーステップではキャッシュが使用されず、各レイヤのミラーIDが異なる.