dockerキャッシュを使用せずにミラーを再構築
2445 ワード
Dockerfileを使用してミラーを構築すると、そのキャッシュ機能が利用できます.コマンドが変更された場合にのみ、構築されたステップが再構築されます.次に、再構築前に関連したto-do appの例を示します.
キャッシュは非常に役に立ち、時間を節約しますが、dockerキャッシュの動作が期待に達しない場合があります.上記のDockerfileを例として、コードを変更してGit倉庫にpushしたとします.git cloneコマンドが変更されていないため、新しいコードはチェックアウトされません.Dockerではgit cloneの手順が同じように見えるのでキャッシュを使用しました.この場合、dockerのキャッシュを開きたくないかもしれません.
に質問
キャッシュを使わずにDockerfileを再構築したいと思います.
解決策
ミラーを構築するときに--no-cacheパラメータを使用します.
ディスカッション
dockerにミラーを構築するときにキャッシュを使用しないように強制するには、-no-cacheパラメータ付きdocker buildコマンドを実行します.次の例では、–no-cacheを使用してミラーを構築します.
以上のビルドミラーステップではキャッシュが使用されず、各レイヤのミラーIDが異なる.
$ 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が異なる.