Dockerfileを使用してDockerイメージを構築する際の実行手順を理解したいと思います。以下にリストしたいくつかの質問。ビルドプロセスの理解を助けてください。
#from base image
FROM ubuntu:14.04
#author name
MAINTAINER RAGHU
#commands to run in the container
RUN echo "hello Raghu"
RUN sleep 10
RUN echo "TASK COMPLETED"
イメージのビルドに使用されるコマンド:docker build -t raghavendar/hands-on:2.0 .
Sending build context to Docker daemon 20.04 MB
Step 1 : FROM ubuntu:14.04
---> b1719e1db756
Step 2 : MAINTAINER RAGHU
---> Running in 532ed79e6d55
---> ea6184bb8ef5
Removing intermediate container 532ed79e6d55
Step 3 : RUN echo "hello Raghu"
---> Running in da327c9b871a
hello Raghu
---> f02ff92252e2
Removing intermediate container da327c9b871a
Step 4 : RUN sleep 10
---> Running in aa58dea59595
---> fe9e9648e969
Removing intermediate container aa58dea59595
Step 5 : RUN echo "TASK COMPLETED"
---> Running in 612adda45c52
TASK COMPLETED
---> 86c73954ea96
Removing intermediate container 612adda45c52
Successfully built 86c73954ea96
ステップ2で:
Step 2 : MAINTAINER RAGHU
---> Running in 532ed79e6d55
質問1:id-532ed79e6d55のコンテナーで実行されていることを示していますが、このコンテナーはどのDockerイメージで形成されていますか?
---> ea6184bb8ef5
質問2:このIDは何ですか?それはイメージまたはコンテナですか?
Removing intermediate container 532ed79e6d55
質問3:最終画像は、中間コンテナから保存された複数のレイヤーで形成されていますか?
はい、Dockerイメージは階層化されています。新しいイメージを作成すると、DockerはDockerfileの各命令(RUN
、COPY
など)に対してこれを実行します。
FROM
イメージから一時コンテナーを作成します。最終画像レイヤーには、画像に名前を付けるものでタグ付けされます-これは、docker history raghavendar/hands-on:2.0
、各レイヤーと、それを作成した命令の略語が表示されます。
特定のクエリ:
1)532
は、イメージID b17
、これはFROM
イメージ、ubuntu:14.04
。
2)ea6
は、命令の出力として作成されたイメージレイヤーです。つまり、中間コンテナの保存532
。
3)はい。 Dockerはこれを nion File System と呼び、画像が非常に効率的である主な理由です。