2016-09-26 24 views
9

Tôi muốn hiểu các bước thực hiện liên quan đến việc xây dựng Docker Images bằng Dockerfile. Vài câu hỏi tôi đã liệt kê dưới đây. Xin hãy giúp tôi hiểu được quá trình xây dựng.Docker: Các thùng chứa trung gian được hình thành như thế nào

Dockerfile nội dung

#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" 

lệnh dùng để xây dựng hình ảnh: 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 

Trong bước 2:

Step 2 : MAINTAINER RAGHU 
    ---> Running in 532ed79e6d55 

[Câu hỏi 1: nó chỉ ra rằng nó đang chạy trong các container với id - 532ed79e6d55, nhưng với những gì Docker hình ảnh là container này được hình thành ? ]

---> ea6184bb8ef5 

[Câu hỏi 2: id này là gì? Đây có phải là hình ảnh hoặc vùng chứa không?] Xóa vùng chứa trung gian 532ed79e6d55

Câu hỏi 3: Hình ảnh cuối cùng có được tạo thành với nhiều thùng chứa ở các lớp khác nhau không?

Trả lời

10

Có, hình ảnh Docker được xếp lớp. Khi bạn xây dựng một hình ảnh mới, Docker thực hiện điều này cho mỗi hướng dẫn (RUN, COPY vv) trong Dockerfile của bạn:

  1. tạo một container tạm thời từ lớp hình ảnh trước đó (hoặc hình ảnh cơ sở FROM cho lệnh đầu tiên;
  2. chạy hướng dẫn Dockerfile trong tạm container "trung gian";
  3. lưu container tạm thời như là một lớp hình ảnh mới

lớp hình ảnh cuối cùng được gắn thẻ với bất cứ điều gì bạn đặt tên im. tuổi - điều này sẽ rõ ràng nếu bạn chạy docker history raghavendar/hands-on:2.0, bạn sẽ thấy từng lớp và tên viết tắt của hướng dẫn đã tạo.

truy vấn cụ thể của bạn:

1) 532 là một container tạm được tạo ra từ hình ảnh ID b17, đó là FROM hình ảnh của bạn, ubuntu:14.04.

2) ea6 là lớp hình ảnh được tạo làm đầu ra của lệnh, tức là từ lưu vùng chứa trung gian 532.

3) có. Docker gọi đây là Union File System và đó là lý do chính khiến hình ảnh trở nên hiệu quả.

Các vấn đề liên quan