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:
- Lệnh Docker Run
- Chạy Container ở Tiền cảnh
- Chạy Container ở Chế độ tách rời
- Hủy bỏ container sau khi thoát
- Đặt tên container
- Xuất bản cổng container
- Chia sẻ dữ liệu (Tập kết nối)
- Chạy Container tương tác
- Phần kết luận
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_ipnào được chỉ định, nó sẽ mặc định là0.0.0.0. Nếu không cóprotocolnà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_srccó 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_destlà 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
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
và
-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.
Với một vài thay đổi, cuộc tranh luận tổng thống Mỹ sắp tới có thể thân thiện hơn với cả cử tri và Web, một liên minh các blogger, các nhà tư vấn chính trị và các nhà vận động khác nhau. Đảng Dân chủ và Cộng hòa đã kêu gọi các ứng cử viên tổng thống Barack Obama và John McCain thay đổi một số quy tắc của các cuộc tranh luận theo cách có thể khuyến khích các cử tri đưa ra và lựa chọn các câu hỏi trên Web và cho phép các trang Web phân phối lại video của các cuộc tranh luận không có bản quyền mối
Cuộc tranh luận đầu tiên giữa McCain và Obama là tối thứ sáu tại Đại học Mississippi. Hai trong số này được lên kế hoạch vào tháng 10, cũng như một cuộc tranh luận phó tổng thống.
IBM đang thực hiện một lần chạy khác tại các khách hàng nhỏ và vừa của Microsoft (SMB), thông báo về thiết bị phần cứng phần mềm vào hôm thứ hai, kết hợp máy IBM với phần mềm cộng tác Lotus Foundations Start vào thứ hai. IBM thông báo rằng hypervisor của VMware đã được tích hợp với Lotus Foundations Start, cho phép người dùng chạy các ứng dụng Windows. IBM hiện đang chạy một chương trình beta xung quanh khả năng của nó.
Thời điểm của IBM rõ ràng là trùng khớp với sự kiện khởi động ngày 12 tháng 11 của Microsoft dành cho Small Business Server 2008 và Essential Business Server 2008. Microsoft không thể tiếp cận ngay để bình luận. > Lotus Foundations Start, công bố hồi đầu năm nay như là một thiết bị phần mềm, sử dụng các tính năng cộng tác và năng suất của Lotus và tăng tính an toàn, khôi phục thảm họa và các khả năng khác. IBM hiện đang hy vọng rằng các đối tác và khách hàng có ý tưởng về cả phần mềm và phần cứn
Các nhà nghiên cứu ở Anh và Mỹ hôm thứ Sáu đã công bố một bài báo chi tiết các khám phá có thể đưa một máy tính lượng tử đầy đủ chức năng lên một bước gần hơn với thực tế. vấn đề giữ dữ liệu theo định dạng mạch lạc, làm cho việc chạy chương trình hoặc công việc tính toán trở nên khó khăn. Các nhà nghiên cứu đã tìm ra cách để bảo toàn các electron, lưu trữ dữ liệu lâu hơn, cho phép một hệ thống xử lý dữ liệu chặt chẽ hơn và chạy các chương trình hiệu quả hơn.
Mặc dù trong phát triển, các máy tính lượng tử có thể cách mạng hóa khuôn mặt của máy tính. Trong một vài giây, các máy tính lượng tử có thể thực hiện các nhiệm vụ không khả thi đối với các siêu máy tính hiện nay. Tính toán lượng tử sử dụng các nguyên tử và phân tử - để xử lý số lượng lớn các nhiệm vụ ở tốc độ siêu dữ liệu vì dữ liệu được lưu trữ và chia sẻ ở nhiều trạng thái hơn là các trạng thái nhị phân bình thường là 0 và 1.







