Docker. [số 8] tạo ứng dụng đóng gói [số 8] gọi là container. Mỗi thùng chứa cung cấp một môi trường bị cô lập tương tự như một máy ảo [số 8] (VM). Không giống như VMS, container Docker Đừng chạy một hệ điều hành đầy đủ [số 8] . Họ chia sẻ kernel của máy chủ của bạn và ảo hóa ở cấp độ phần mềm.
Những điều cơ bản do docker
Docker đã trở thành một công cụ tiêu chuẩn cho các nhà phát triển phần mềm và quản trị viên hệ thống. Đó là một cách gọn gàng để nhanh chóng khởi chạy các ứng dụng mà không ảnh hưởng đến phần còn lại của hệ thống của bạn. Bạn có thể quay một dịch vụ mới với một
Docker chạy
chỉ huy.
Các thùng chứa gói gọn tất cả mọi thứ cần thiết để chạy một ứng dụng, từ các phụ thuộc gói hệ điều hành vào mã nguồn của riêng bạn. Bạn xác định các bước tạo của container làm hướng dẫn trong một
Dockerfile.
. Docker sử dụng DockerFile để xây dựng một
hình ảnh
.
Hình ảnh xác định phần mềm có sẵn trong các thùng chứa. Điều này tương đương một cách lỏng lẻo để bắt đầu một VM với hệ điều hành ISO. Nếu bạn tạo một hình ảnh, bất kỳ người dùng Docker nào sẽ có thể khởi chạy ứng dụng của bạn với
Docker chạy
.
Docker hoạt động như thế nào?
Các thùng chứa sử dụng các tính năng kernel hệ điều hành để cung cấp các môi trường ảo hóa một phần. Có thể tạo các thùng chứa từ đầu với các lệnh như
chroot.
[số 8]
. Điều này bắt đầu một quá trình với một thư mục gốc được chỉ định thay vì gốc hệ thống. Nhưng sử dụng các tính năng kernel trực tiếp là nghịch ngợm, không an toàn và dễ bị lỗi.
Docker là một giải pháp hoàn chỉnh cho sản xuất, phân phối và sử dụng các container. Các bản phát hành Docker hiện đại bao gồm một số thành phần độc lập [số 8] . Đầu tiên, có Docker CLI. , đó là những gì bạn tương tác với thiết bị đầu cuối của bạn. CLI gửi các lệnh đến một Docker daemon. . Điều này có thể chạy cục bộ hoặc Trên một máy chủ từ xa [số 8] . Daemon chịu trách nhiệm quản lý các thùng chứa và hình ảnh mà chúng được tạo ra từ đó.
Thành phần cuối cùng được gọi là Thời gian chạy container. . Thời gian chạy gọi các tính năng kernel để thực sự khởi chạy các thùng chứa. Docker tương thích với Runtimes tuân thủ Đặc điểm kỹ thuật OCI. [số 8] Tiêu chuẩn mở này cho phép khả năng tương tác giữa các công cụ container hóa khác nhau.
Bạn không cần phải lo lắng quá nhiều về các hoạt động bên trong của Docker khi bạn mới bắt đầu. Lắp đặt.
Docker.
Trên hệ thống của bạn sẽ cung cấp cho bạn mọi thứ bạn cần để xây dựng và chạy các thùng chứa.
Tại sao nhiều người sử dụng Docker?
Các thùng chứa đã trở nên phổ biến vì họ giải quyết nhiều thách thức phổ biến trong phát triển phần mềm. Khả năng chứa một lần và chạy ở mọi nơi Giảm khoảng cách giữa [số 8] môi trường phát triển của bạn và máy chủ sản xuất của bạn.
Sử dụng các thùng chứa cho bạn sự tự tin rằng mọi môi trường đều giống hệt nhau. Nếu bạn có một thành viên trong nhóm mới, họ chỉ cần
Docker chạy
để thiết lập trường hợp phát triển của riêng họ. Khi bạn khởi chạy dịch vụ của mình, bạn có thể sử dụng hình ảnh docker của mình để triển khai để sản xuất. Các
Môi trường sống
[số 8]
Chính xác sẽ phù hợp với ví dụ địa phương của bạn, tránh "nó hoạt động trên các kịch bản của máy" của tôi.
Docker thuận tiện hơn máy ảo đầy đủ. VMS là các công cụ có mục đích chung được thiết kế để hỗ trợ mọi khối lượng công việc có thể. Ngược lại, container có trọng lượng nhẹ, tự túc và phù hợp hơn với các trường hợp sử dụng vứt bỏ. Vì Docker chia sẻ kernel của máy chủ, các thùng chứa có tác động không đáng kể đối với hiệu suất hệ thống. Thời gian khởi động container gần như tức thời, vì bạn chỉ mới bắt đầu các quy trình, không phải là toàn bộ hệ điều hành.
Bắt đầu
Docker có sẵn trên tất cả các bản phân phối Linux phổ biến. Nó cũng chạy trên Windows và MacOS. Theo Hướng dẫn thiết lập Docker cho nền tảng của bạn [số 8] để có được nó lên và chạy.
Bạn có thể kiểm tra xem cài đặt của bạn đang hoạt động bằng cách bắt đầu một thùng chứa đơn giản:
Docker chạy Hello-World
Điều này sẽ bắt đầu một container mới với cơ bản
Chào thế giới
hình ảnh. Hình ảnh phát ra một số đầu ra giải thích cách sử dụng Docker. Các thùng chứa sau đó thoát, thả bạn trở lại thiết bị đầu cuối của bạn.
Tạo hình ảnh
Khi bạn đã chạy
Chào thế giới
, bạn đã sẵn sàng để tạo ra hình ảnh docker của riêng bạn. Dockerfile mô tả cách chạy dịch vụ của bạn bằng cách
Cài đặt phần mềm cần thiết
[số 8]
và sao chép trong các tập tin. Đây là một ví dụ đơn giản sử dụng máy chủ Web Apache:
Từ httpd: Mới nhất Chạy echo "mô-đun loadmodule_module mô-đun / mod_headers.so" & gt; & gt; /usr/local/apache2/conf/httpd.conf. Sao chép .htaccess /var/www/html/.htaccess. Sao chép index.html /var/www/html/index.html. Sao chép CSS / / var / www / html / css
Các
TỪ
dòng xác định hình ảnh cơ sở. Trong trường hợp này, chúng tôi đang bắt đầu từ hình ảnh Apache chính thức. Docker áp dụng các hướng dẫn còn lại trong Dockerfile của bạn trên đỉnh của hình ảnh cơ sở.
Các
CHẠY
Giai đoạn chạy một lệnh trong thùng chứa. Đây có thể là bất kỳ lệnh nào có sẵn trong môi trường của container. Chúng tôi đang bật
tiêu đề
Mô-đun Apache, có thể được sử dụng bởi
.htaccess.
tập tin để thiết lập quy tắc định tuyến.
Các dòng cuối cùng sao chép các tệp HTML và CSS trong thư mục làm việc của bạn vào hình ảnh container. Hình ảnh của bạn hiện chứa mọi thứ bạn cần để chạy trang web của mình.
Bây giờ, bạn có thể xây dựng hình ảnh:
Docker Build -t My-Website: v1.
Docker sẽ sử dụng DockerFile của bạn để xây dựng hình ảnh. Bạn sẽ thấy đầu ra trong thiết bị đầu cuối của bạn vì docker chạy từng hướng dẫn của bạn.
Các
-NS
Trong lệnh
Tags hình ảnh của bạn
[số 8]
với một cái tên nhất định (
Trang web của tôi: V1
). Điều này làm cho nó dễ dàng hơn để tham khảo trong tương lai. Các thẻ có hai thành phần, cách nhau bởi một dấu hai chấm. Phần đầu tiên đặt tên hình ảnh, trong khi thứ hai thường biểu thị phiên bản của nó. Nếu bạn bỏ qua dấu hai chấm, docker sẽ mặc định
đối với việc sử dụng
muộn nhất
[số 8]
như phiên bản thẻ.
Các
.
Vào cuối lệnh, hãy nói với Docker sử dụng DockerFile trong thư mục làm việc cục bộ của bạn. Điều này cũng vậy.
Đặt bối cảnh xây dựng
[số 8]
, cho phép bạn sử dụng các tệp và thư mục trong thư mục làm việc của bạn với
Sao chép
Hướng dẫn trong Dockerfile của bạn.
Khi bạn đã tạo hình ảnh của mình, bạn có thể bắt đầu một container bằng cách sử dụng
Docker chạy
:
Docker RUN -D -P 8080: 80 My-Website: V1
Chúng tôi đang sử dụng một vài lá cờ thêm với
Docker chạy
ở đây. Các
-NS
Cờ làm cho Docker CLI tách ra khỏi thùng chứa, cho phép nó chạy trong nền. Ánh xạ cổng được xác định với
-P
, Vì vậy, cổng 8080 trên bản đồ máy chủ của bạn đến cổng 80 trong thùng chứa. Bạn sẽ thấy trang web của bạn nếu bạn truy cập
localhost: 8080.
trong trình duyệt của bạn.
Hình ảnh Docker được hình thành từ các lớp. Mỗi hướng dẫn trong Dockerfile của bạn tạo ra một lớp mới. Bạn có thể sử dụng các tính năng xây dựng nâng cao để Tham khảo nhiều hình ảnh cơ sở [số 8] , Vứt bỏ các lớp trung gian từ hình ảnh trước đó.
Cơ quan đăng ký hình ảnh
Khi bạn có một hình ảnh, bạn có thể đẩy nó đến một sổ đăng ký. Cơ quan đăng ký. cung cấp lưu trữ tập trung. [số 8] để bạn có thể chia sẻ container với người khác. Sổ đăng ký mặc định là Docker Hub. [số 8] .
Khi bạn chạy một lệnh tham chiếu hình ảnh, đầu tiên docker kiểm tra xem nó có sẵn cục bộ không. Nếu không, nó sẽ cố gắng kéo nó từ Docker Hub. Bạn có thể tự kéo hình ảnh bằng
Docker kéo.
chỉ huy:
Docker Kéo httpd: Mới nhất
Nếu bạn muốn xuất bản một hình ảnh, hãy tạo một
Docker Hub.
[số 8]
tài khoản. Chạy
Đăng nhập Docker.
và nhập tên người dùng và mật khẩu của bạn.
Tiếp theo, gắn thẻ hình ảnh của bạn bằng tên người dùng Docker Hub của bạn:
Docker Tag My-Image: Booker-Hub-username / My-Image mới nhất: Mới nhất
Bây giờ, bạn có thể đẩy hình ảnh của bạn:
Docker đẩy Docker-Hub-username / My-Image: Mới nhất
Những người dùng khác sẽ có thể kéo hình ảnh của bạn và bắt đầu container với nó.
Bạn có thể Chạy registry của riêng bạn [số 8] Nếu bạn cần lưu trữ hình ảnh riêng tư. Một số dịch vụ của bên thứ ba cũng Cung cấp đăng ký Docker [số 8] như các lựa chọn thay thế cho Docker Hub.
Quản lý container của bạn
Docker CLI có một số lệnh để cho phép bạn quản lý các thùng chứa đang chạy của bạn. Dưới đây là một số trong những người hữu ích nhất để biết:
Danh sách container.
Docker PS.
Cho bạn thấy tất cả các thùng chứa đang chạy của bạn. Thêm
-Một
Cờ sẽ hiển thị các container đã dừng, quá.
Dừng lại và bắt đầu container
Để ngăn chặn một container, chạy
Docker dừng container của tôi
. Thay thế
container của tôi
với tên hoặc id của container. Bạn có thể nhận được thông tin này từ
trước
chỉ huy. Một thùng chứa bị dừng được khởi động lại với
Docker bắt đầu container của tôi
.
Các container thường chạy miễn là quá trình chính của họ vẫn còn sống.
Khởi động lại chính sách
[số 8]
Kiểm soát những gì xảy ra khi một container dừng hoặc máy chủ của bạn khởi động lại. Đi qua
--Restart luôn luôn
đến
Docker chạy
Để làm cho một container khởi động lại ngay sau khi nó dừng lại.
Lấy vỏ
Thêm
-nó
Cờ nếu bạn cần truy cập tương tác. Điều này cho phép bạn thả vào một cái vỏ bằng cách chạy
docker exec -it my-container sh
.
Nhật ký giám sát
Docker tự động thu thập đầu ra phát ra các luồng đầu vào và đầu ra tiêu chuẩn của container. Các
Docker đăng nhập container của tôi
[số 8]
Lệnh sẽ hiển thị nhật ký của container bên trong thiết bị đầu cuối của bạn. Các
--theo dõi
Cờ thiết lập một luồng liên tục để bạn có thể xem nhật ký trong thời gian thực.
Dọn dẹp tài nguyên
Container cũ và hình ảnh có thể nhanh chóng chồng chất trên hệ thống của bạn. Sử dụng
docker rm my-container
để xóa một container bằng ID hoặc tên của nó.
Lệnh cho hình ảnh là
Docker RMI My-Image: Mới nhất
. Vượt qua ID của hình ảnh hoặc tên thẻ đầy đủ. Nếu bạn chỉ định một thẻ, hình ảnh sẽ không bị xóa cho đến khi nó không còn thẻ được gán. Mặt khác, thẻ đã cho sẽ bị xóa nhưng các thẻ khác của hình ảnh sẽ vẫn có thể sử dụng được.
Dọn dẹp số lượng lớn có thể sử dụng
Docker prune.
chỉ huy
[số 8]
. Điều này cung cấp cho bạn một cách dễ dàng để loại bỏ tất cả các thùng chứa đã dừng và hình ảnh dư thừa.
Quản lý đồ họa.
Nếu thiết bị đầu cuối không phải là thứ của bạn, bạn có thể sử dụng các công cụ của bên thứ ba để Thiết lập giao diện đồ họa cho Docker [số 8] . Bảng điều khiển web cho phép bạn nhanh chóng giám sát và quản lý cài đặt của bạn. Họ cũng giúp bạn điều khiển từ xa các container của bạn.
Lưu trữ dữ liệu liên tục.
Container Docker là phù du theo mặc định. Các thay đổi được thực hiện đối với hệ thống tập tin của container sẽ không tồn tại sau khi container dừng lại. Nó không an toàn để
Chạy bất kỳ hình thức lưu trữ tập tin
[số 8]
Trong một container bắt đầu với một cơ bản
Docker chạy
chỉ huy.
Có một vài cách tiếp cận khác nhau để Quản lý dữ liệu liên tục [số 8] . Phổ biến nhất là sử dụng ổ đĩa docker. Khối lượng là đơn vị lưu trữ [số 8] được gắn vào các hệ thống tập tin container. Bất kỳ dữ liệu nào trong một tập sẽ vẫn còn nguyên vẹn sau khi các điểm dừng container được liên kết của nó, cho phép bạn kết nối một vùng chứa khác trong tương lai.
Duy trì bảo mật
Khối lượng công việc dockerized có thể an toàn hơn so với các đối tác kim loại trần của họ, vì Docker cung cấp một số tách biệt giữa hệ điều hành và dịch vụ của bạn. Tuy nhiên, docker là một vấn đề bảo mật tiềm ẩn, như nó
thông thường chạy như
nguồn gốc
[số 8]
và có thể được khai thác để chạy phần mềm độc hại.
Nếu bạn chỉ đang chạy Docker như một công cụ phát triển, cài đặt mặc định thường an toàn để sử dụng. Máy chủ và máy móc sản xuất với ổ cắm daemon lộ ra mạng nên được làm cứng trước khi bạn đi trực tiếp.
Kiểm toán cài đặt Docker của bạn [số 8] để xác định các vấn đề bảo mật tiềm năng. Có Công cụ tự động có sẵn [số 8]Điều đó có thể giúp bạn tìm thấy điểm yếu và đề xuất nghị quyết. Bạn cũng có thể Quét hình ảnh container riêng lẻ [số 8] cho các vấn đề có thể được khai thác từ bên trong.
Làm việc với nhiều thùng chứa
Các
Docker.
lệnh chỉ hoạt động với một container tại một thời điểm. Bạn sẽ thường muốn sử dụng các thùng chứa trong tổng hợp.
Docker sáng tác
[số 8]
là một công cụ cho phép bạn xác định các container của bạn được khai báo trong một tệp yaml. Bạn có thể bắt đầu tất cả chúng với một lệnh duy nhất.
Điều này rất hữu ích khi dự án của bạn phụ thuộc vào các dịch vụ khác, chẳng hạn như một phụ trợ trên web dựa trên máy chủ cơ sở dữ liệu. Bạn có thể xác định cả hai container trong
Docker-Compose.yml.
và hưởng lợi từ quản lý hợp lý với
Mạng tự động
[số 8]
.
Đây là một đơn giản
Docker-Compose.yml.
tập tin:
Phiên bản: "3"
dịch vụ:
ứng dụng:
Hình ảnh: App-Server: Mới nhất
Cổng:
- 8000: 80
Cơ sở dữ liệu:
Hình ảnh: Cơ sở dữ liệu-Máy chủ: Mới nhất
Khối lượng:
- Dữ liệu cơ sở dữ liệu: / Dữ liệu
Khối lượng:
Dữ liệu cơ sở dữ liệu:
Điều này định nghĩa hai container (
ứng dụng
và
Cơ sở dữ liệu
). Một âm lượng được tạo cho cơ sở dữ liệu. Điều này được gắn vào
/dữ liệu
trong container. Cổng 80 của máy chủ APP được hiển thị dưới dạng 8000 trên máy chủ. Chạy
docker-sáng tác lên -d
Để quay lên cả hai dịch vụ, bao gồm cả mạng và khối lượng.
Việc sử dụng compose docker cho phép bạn
Viết tái sử dụng
[số 8]
định nghĩa container mà bạn có thể chia sẻ với những người khác. Bạn có thể phạm
Docker-Compose.yml.
vào kiểm soát phiên bản của bạn thay vì có các nhà phát triển ghi nhớ
Docker chạy
lệnh.
Có những cách tiếp cận khác để chạy nhiều container. Ứng dụng Docker là. [số 8] một giải pháp mới nổi cung cấp một mức độ trừu tượng khác. Nơi khác trong hệ sinh thái, Podman là một thay thế docker [số 8] Điều đó cho phép bạn tạo "POD" của các thùng chứa trong thiết bị đầu cuối của bạn.
Dàn chồng container
Docker thường không được chạy như trong sản xuất. Bây giờ phổ biến hơn để sử dụng một nền tảng dàn nhạc như Kubernetes. [số 8] hoặc docker chế độ swarm. Những công cụ này được thiết kế để xử lý Nhiều bản sao container, [số 8] trong đó cải thiện khả năng mở rộng và độ tin cậy.
Docker chỉ là một thành phần trong phong trào container rộng lớn hơn. Dàn nhạc
Sử dụng tương tự
[số 8]
Các công nghệ thời gian chạy container để cung cấp một môi trường phù hợp hơn cho sản xuất. Sử dụng nhiều trường hợp container
Cho phép cập nhật cán
[số 8]
Cũng như phân phối trên các máy, làm cho việc triển khai của bạn kiên cường hơn để thay đổi và mất điện. Thông thường
Docker.
CLI nhắm mục tiêu một máy chủ và làm việc với các container riêng lẻ.
Một nền tảng mạnh mẽ cho các container
Docker cung cấp cho bạn tất cả mọi thứ bạn cần để làm việc với các container. Nó đã trở thành một công cụ chính để phát triển phần mềm và quản trị hệ thống. Các lợi ích chính được tăng cách ly và tính di động cho các dịch vụ riêng lẻ.
Làm quen với Docker đòi hỏi một sự hiểu biết về các khái niệm container và hình ảnh cơ bản. Bạn có thể áp dụng những thứ này để tạo ra hình ảnh và môi trường chuyên dụng của mình để chứa khối lượng công việc của bạn.