Dockerfile.1
複数実行RUN
:
FROM busybox
RUN echo This is the A > a
RUN echo This is the B > b
RUN echo This is the C > c
Dockerfile.2
それらに参加します:
FROM busybox
RUN echo This is the A > a &&\
echo This is the B > b &&\
echo This is the C > c
それぞれRUN
が1つのレイヤーを作成するので、レイヤーが少ないほど良い、つまり優れているといつも思っていDockerfile.2
ました。
これは明らかにRUN
、前のものRUN
(つまりyum install nano && yum clean all
)によって追加されたものを削除するときに当てはまりますが、すべてRUN
が何かを追加する場合は、考慮すべきいくつかの点があります。
レイヤーは前のレイヤーの上に差分を追加するだけなので、後のレイヤーが前のレイヤーで追加されたものを削除しない場合、両方の方法の間にディスク領域を節約する利点はあまりありません...
レイヤーはDocker Hubから並行してプルされるため
Dockerfile.1
、おそらく少し大きくなりますが、理論的にはダウンロードが速くなります。4番目の文(つまり
echo This is the D > d
)を追加してローカルで再Dockerfile.1
構築する場合、キャッシュにより高速に構築さDockerfile.2
れますが、4つのコマンドすべてを再度実行する必要があります。
それで、質問:Dockerfileを実行するためのより良い方法はどれですか?