Khi tạo bộ chứa Docker, mục tiêu chung là bất kỳ ai cũng có thể chỉ cần thực thi
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba91 và khởi chạy bộ chứa. Trong bài viết hôm nay, chúng ta sẽ khám phá hai hướng dẫn chính của
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92 cho phép chúng ta làm điều đó. Hãy khám phá sự khác biệt giữa các hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 và
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94
Nhìn bề ngoài, các lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 và
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 có vẻ như chúng thực hiện cùng một chức năng. Tuy nhiên, khi tìm hiểu sâu hơn, bạn sẽ dễ dàng nhận thấy rằng hai hướng dẫn này thực hiện các tác vụ hoàn toàn khác nhau
ApacheBench $ docker build -t ab .
Sending build context to Docker daemon 2.048 kB
Step 1/3 : FROM ubuntu:latest
---> ebcd9d4fca80
Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/*
---> Using cache
---> d9304ff09c98
Step 3/3 : CMD ab
---> Using cache
---> ecfc71e7fba9
Successfully built ecfc71e7fba9
2
Để giúp làm ví dụ, chúng tôi sẽ tạo một bộ chứa Docker chỉ đơn giản là thực thi tiện ích ApacheBench
Trong các bài viết trước, chúng tôi đã khám phá ra tính đơn giản và hữu ích của công cụ kiểm tra tải ApacheBench. Tuy nhiên, loại tiện ích dòng lệnh này nói chung không phải là loại ứng dụng sẽ "Dockerize. " Việc sử dụng chung Docker tập trung nhiều hơn vào việc tạo dịch vụ thay vì các công cụ thực thi đơn lẻ như ApacheBench
Lý do chính đằng sau điều này là do các bộ chứa Docker thông thường không được xây dựng để chấp nhận các tham số bổ sung khi khởi chạy. Điều này khiến việc sử dụng công cụ dòng lệnh trong vùng chứa trở nên khó khăn
Hãy xem điều này hoạt động bằng cách tạo một bộ chứa Docker có thể được sử dụng để thực thi ApacheBench đối với bất kỳ trang web nào
FROM ubuntu:latest RUN apt-get update && \ apt-get install -y apache2-utils && \ rm -rf /var/lib/apt/lists/* CMD ab
Trong
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92, chúng tôi chỉ đơn giản sử dụng hình ảnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba99 làm hình ảnh vùng chứa cơ sở, cài đặt gói
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba900, sau đó xác định rằng lệnh cho vùng chứa này là lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901
Do bộ chứa Docker này được lên kế hoạch sử dụng làm bộ thực thi cho lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901, nên việc đặt giá trị lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 thành lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901 là điều hợp lý. Tuy nhiên, nếu chúng ta chạy vùng chứa này, chúng ta sẽ bắt đầu thấy một sự khác biệt thú vị giữa vùng chứa này và các vùng chứa ứng dụng khác
Tuy nhiên, trước khi chúng tôi có thể chạy vùng chứa này, trước tiên chúng tôi cần xây dựng nó. Chúng ta có thể làm như vậy với lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba905
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba9
Khi xây dựng vùng chứa này, tôi đã gắn thẻ vùng chứa với tên là
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901. Điều này có nghĩa là chúng ta có thể chỉ cần khởi chạy vùng chứa này thông qua tên
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba90
Khi chúng tôi chạy bộ chứa
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901, chúng tôi nhận được lỗi từ lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901 cũng như chi tiết sử dụng. Lý do cho điều này là chúng tôi đã xác định lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 cho lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901 mà không chỉ định bất kỳ cờ hoặc máy chủ đích nào để kiểm tra tải đối với. Lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 này được sử dụng để xác định lệnh mà vùng chứa sẽ thực thi khi khởi chạy. Vì chúng tôi đã xác định rằng đó là lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901 không có đối số, nên nó đã thực thi lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901 mà không có đối số
Tuy nhiên, giống như hầu hết các công cụ dòng lệnh, đó đơn giản không phải là cách hoạt động của
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901. Với
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901, bạn cần chỉ định
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba997 nào bạn muốn kiểm tra
Những gì chúng tôi có thể làm để thực hiện công việc này là ghi đè hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 khi chúng tôi khởi chạy vùng chứa. Chúng ta có thể làm điều này bằng cách thêm lệnh và đối số mà chúng ta muốn thực thi vào cuối lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba999
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba99
Khi chúng tôi thêm
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba930 vào cuối lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba999 của mình, chúng tôi có thể ghi đè lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 và thực hiện thành công lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901. Tuy nhiên, trong khi chúng tôi đã thành công, quá trình ghi đè hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 này khá rắc rối
Đăng ký tài khoản Codeship miễn phí
ĐIỂM VÀO
Đây là nơi hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 tỏa sáng. Lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 hoạt động rất giống với lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 ở chỗ nó được sử dụng để chỉ định lệnh được thực thi khi vùng chứa được khởi động. Tuy nhiên, điểm khác biệt là
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 không cho phép bạn ghi đè lệnh
Thay vào đó, bất kỳ thứ gì được thêm vào cuối lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba999 đều được thêm vào lệnh. Để hiểu điều này tốt hơn, hãy tiếp tục và thay đổi hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 của chúng tôi thành hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93
Sau khi chỉnh sửa
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92, chúng ta sẽ cần xây dựng lại hình ảnh một lần nữa
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba97
Bây giờ, chúng ta có thể chạy lại bộ chứa
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901;
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92
Như ví dụ trên cho thấy, về cơ bản, chúng ta đã biến vùng chứa của mình thành tệp thực thi. Nếu muốn, chúng ta có thể thêm các cờ bổ sung vào lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 để đơn giản hóa một công cụ dòng lệnh phức tạp thành bộ chứa Docker một đối số
Hãy cẩn thận với cú pháp
Một điều quan trọng cần nêu ra về lệnh ________ 04 là cú pháp rất quan trọng. Về mặt kỹ thuật,
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94 hỗ trợ cả cú pháp
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba920 và cú pháp
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba921. Tuy nhiên, trong khi cả hai đều được hỗ trợ, chúng có hai ý nghĩa khác nhau và thay đổi cách thức hoạt động của
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94
Hãy thay đổi
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92 của chúng ta để phù hợp với cú pháp này và xem cách nó thay đổi hành vi vùng chứa của chúng ta
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba90
Với những thay đổi đã thực hiện, hãy xây dựng vùng chứa
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba91
Với vùng chứa được xây dựng, hãy chạy lại vùng chứa đó bằng các tùy chọn tương tự như trước đây
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92
Có vẻ như chúng ta đang quay lại hành vi tương tự như hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93. Tuy nhiên, nếu chúng ta cố ghi đè lên
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94, chúng ta sẽ thấy hành vi khác so với khi chúng ta ghi đè hướng dẫn
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba90
Với lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94, không thể ghi đè lệnh trong quá trình thực thi lệnh
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba999 giống như với
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93. Điều này làm nổi bật một cách sử dụng khác của
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94, như một phương pháp đảm bảo rằng một lệnh cụ thể được thực thi khi vùng chứa được đề cập được khởi động bất kể nỗ lực ghi đè lên
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94
Tóm lược
Trong bài viết này, chúng tôi đã đề cập khá nhiều về
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba93 và
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba94; . Để xem một số ví dụ này, bạn có thể xem tài liệu tham khảo
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba92 của Docker
Tuy nhiên, với ví dụ trên, giờ đây chúng ta có một cách để "Dockerize" các công cụ dòng lệnh đơn giản như
$ docker build -t ab . Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM ubuntu:latest ---> ebcd9d4fca80 Step 2/3 : RUN apt-get update && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/* ---> Using cache ---> d9304ff09c98 Step 3/3 : CMD ab ---> Using cache ---> ecfc71e7fba9 Successfully built ecfc71e7fba901, mở ra một vài trường hợp sử dụng thú vị. Nếu bạn có một cái, hãy chia sẻ nó trong phần bình luận bên dưới