Android

Docker chạy lệnh với các ví dụ

Bài 26: Docker 2/DevOps triển khai tạo Image, Container&Docker Hub cho khách hàng và đội lập trình

Bài 26: Docker 2/DevOps triển khai tạo Image, Container&Docker Hub cho khách hàng và đội lập trình

Mục lục:

Anonim

Docker là một nền tảng cho phép bạn phát triển, thử nghiệm và triển khai các ứng dụng dưới dạng các thùng chứa di động, tự cung cấp, chạy hầu như mọi nơi.

Lệnh docker run tạo một container từ một hình ảnh nhất định và khởi động container bằng một lệnh đã cho. Đây là một trong những lệnh đầu tiên bạn nên làm quen khi bắt đầu làm việc với Docker., chúng tôi sẽ sử dụng hình ảnh Nginx chính thức để hiển thị nhiều cách khác nhau để chạy bộ chứa Docker.

Lệnh Docker Run

Lệnh docker run có dạng sau:

docker run IMAGE

Tên của hình ảnh mà từ đó container nên được tạo là đối số bắt buộc duy nhất cho lệnh docker run . Nếu hình ảnh không có trên hệ thống cục bộ, nó được lấy từ sổ đăng ký.

Nếu không có lệnh nào được chỉ định, lệnh được chỉ định trong các lệnh CMD hoặc ENTRYPOINT của Dockerfile sẽ được thực thi khi chạy container.

Bắt đầu từ phiên bản 1.13, Docker CLI đã được cấu trúc lại và tất cả các lệnh đã được nhóm lại theo đối tượng mà chúng tương tác.

Vì lệnh run tương tác với các container, nên bây giờ nó là một tiểu ban của docker container . Cú pháp của lệnh mới như sau:

docker container run IMAGE

Cú pháp cũ, trước 1.13 vẫn được hỗ trợ. Dưới mui xe, lệnh docker run là một bí danh cho docker container run . Người dùng được khuyến khích sử dụng cú pháp lệnh mới.

Một danh sách tất cả docker container run tùy chọn docker container run có thể được tìm thấy trên trang tài liệu Docker.

Chạy Container ở Tiền cảnh

Theo mặc định, khi không có tùy chọn nào được cung cấp cho lệnh docker run , quá trình root được bắt đầu ở nền trước. Điều này có nghĩa là đầu vào, đầu ra và lỗi tiêu chuẩn từ quy trình gốc được gắn vào phiên cuối.

docker container run nginx

Đầu ra của quá trình nginx sẽ được hiển thị trên thiết bị đầu cuối của bạn. Vì, không có kết nối đến máy chủ web, thiết bị đầu cuối trống.

Để dừng container, chấm dứt quá trình Nginx đang chạy bằng cách nhấn CTRL+C

Chạy Container ở Chế độ tách rời

Để giữ cho container chạy khi bạn thoát phiên cuối, hãy khởi động nó ở chế độ tách rời. Điều này tương tự như chạy một quy trình Linux trong nền.

Sử dụng tùy chọn -d để bắt đầu một container tách ra:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Container tách ra sẽ dừng lại khi quá trình root bị chấm dứt.

Bạn có thể liệt kê các container đang chạy bằng docker container ls .

Để gắn thiết bị đầu cuối của bạn vào quá trình root container được tách ra, hãy sử dụng lệnh docker container attach .

Hủy bỏ container sau khi thoát

Theo mặc định, khi container thoát, hệ thống tệp của nó vẫn tồn tại trên hệ thống máy chủ.

Các tùy chọn --rm lệnh docker run --rm để loại bỏ container khi nó tự động thoát:

docker container run --rm nginx

Hình ảnh Nginx có thể không phải là ví dụ tốt nhất để dọn sạch hệ thống tệp của bộ chứa sau khi bộ chứa thoát ra. Tùy chọn này thường được sử dụng trên các thùng chứa tiền cảnh thực hiện các tác vụ ngắn hạn như kiểm tra hoặc sao lưu cơ sở dữ liệu.

Đặt tên container

Trong Docker, mỗi container được xác định bởi UUID và tên của nó. Theo mặc định, nếu không được đặt rõ ràng, tên của bộ chứa sẽ được tạo bởi trình nền Docker.

Sử dụng tùy chọn --name để gán tên tùy chỉnh cho vùng chứa:

docker container run -d --name my_nginx nginx

Tên container phải là duy nhất. Nếu bạn cố gắng khởi động một container khác có cùng tên, bạn sẽ gặp một lỗi tương tự như sau:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Chạy docker container ls -a để liệt kê tất cả các container và xem tên của chúng:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Các tên có ý nghĩa rất hữu ích để tham chiếu vùng chứa trong mạng Docker hoặc khi chạy các lệnh CLI của docker.

Xuất bản cổng container

Theo mặc định, nếu không có cổng nào được xuất bản, quá trình chạy trong vùng chứa chỉ có thể truy cập được từ bên trong vùng chứa.

Xuất bản cổng có nghĩa là ánh xạ các cổng container tới các cổng của máy chủ để các cổng có sẵn cho các dịch vụ bên ngoài Docker.

Để xuất bản một cổng, sử dụng các tùy chọn -p như sau:

-p host_ip:host_port:container_port/protocol

  • Nếu không có host_ip nào được chỉ định, nó sẽ mặc định là 0.0.0.0 . Nếu không có protocol nào được chỉ định, nó sẽ mặc định là TCP.Để xuất bản nhiều cổng, hãy sử dụng nhiều tùy chọn -p .

Để ánh xạ cổng TCP 80 (nginx) trong vùng chứa sang cổng 8080 trên giao diện localhost của máy chủ, bạn sẽ chạy:

docker container run --name web_server -d -p 8080:80 nginx

Bạn có thể xác minh rằng cổng được xuất bản bằng cách mở http://localhost:8080 trong trình duyệt của bạn hoặc chạy lệnh curl sau trên máy chủ Docker:

curl -I

Đầu ra sẽ trông giống như thế này:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Chia sẻ dữ liệu (Tập kết nối)

Khi một container bị dừng, tất cả dữ liệu được tạo bởi container sẽ bị xóa. Docker Volume là cách ưa thích để làm cho dữ liệu được duy trì và chia sẻ nó trên nhiều container.

Để tạo và quản lý khối lượng, hãy sử dụng các tùy chọn -p như sau:

-v host_src:container_dest:options

  • host_src có thể là một đường dẫn tuyệt đối đến một tệp hoặc thư mục trên máy chủ hoặc một volume có tên. container_dest là một đường dẫn tuyệt đối đến một tệp hoặc thư mục trên container.Options có thể là rw (read-write) và ro (chỉ đọc). Nếu không có tùy chọn nào được chỉ định, nó mặc định là rw .

Để giải thích cách thức hoạt động, hãy tạo một thư mục trên máy chủ và đặt index.html vào đó:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Tiếp theo, gắn thư mục public_html vào /usr/share/nginx/html trong vùng chứa:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Thay vì chỉ định đường dẫn tuyệt đối đến thư mục public_html , chúng tôi đang sử dụng lệnh $(pwd) , in thư mục làm việc hiện tại.

Bây giờ, nếu bạn nhập http://localhost:8080 trong trình duyệt của mình, bạn sẽ thấy nội dung của index.html . Bạn cũng có thể sử dụng curl :

curl

Testing Docker Volumes

Chạy Container tương tác

Khi xử lý các quy trình tương tác như bash , hãy sử dụng các tùy chọn -i -t để khởi động container.

Các tùy chọn -it yêu cầu Docker giữ đầu vào tiêu chuẩn được gắn vào thiết bị đầu cuối và phân bổ giả:

docker container run -it nginx /bin/bash

Shell Bash của container sẽ được gắn vào terminal và dấu nhắc lệnh sẽ thay đổi:

root@1da70f1937f5:/#

Bây giờ, bạn có thể tương tác với trình bao chứa và chạy bất kỳ lệnh nào bên trong nó.

Trong ví dụ này, chúng tôi đã cung cấp một lệnh ( /bin/bash ) làm đối số cho lệnh docker run docker đã được thực thi thay vì lệnh được chỉ định trong Dockerfile.

Phần kết luận

Docker là tiêu chuẩn để đóng gói và triển khai các ứng dụng và là thành phần thiết yếu của CI / CD, tự động hóa và DevOps.

Lệnh docker container run được sử dụng để tạo và chạy các container Docker.

bến tàu