Thứ tư, 25/04/2018 | 00:00 GMT+7

Cách quản lý và giám sát các container Docker có khô trên Ubuntu 16.04

GIF giám sát khô

dry là một ứng dụng terminal đơn giản nhưng mở rộng được xây dựng để tương tác với các containers Docker và hình ảnh của chúng. Sử dụng dry loại bỏ sự lặp lại liên quan khi thực hiện các lệnh Docker Engine thông thường và cung cấp một giải pháp thay thế trực quan hơn cho Docker CLI root .

Dry có khả năng nhanh chóng khởi động và dừng các container , xóa Docker image một cách an toàn hoặc mạnh mẽ, liên tục theo dõi các quy trình của container trong thời gian thực và truy cập kết quả của các lệnh info , inspect , historylog Docker.

Hầu hết các lệnh có thể được thực thi thông qua Docker Engine CLI chính thức đều có sẵn dễ dàng hơn ở trạng thái khô, với cùng hành vi và kết quả. Dry cũng có chức năng Docker Swarm, cung cấp một lối thoát để theo dõi và quản lý các cài đặt containers nhiều server .

Trong hướng dẫn này, ta sẽ cài đặt khô và khám phá một số tính năng hữu ích nhất của nó:

  • Tương tác với các containers Docker, hình ảnh và mạng,
  • Giám sát containers Docker và
  • Tùy chọn tương tác với các dịch vụ và nút Docker Swarm.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Bước 1 - Cài đặt khô

Đầu tiên, ta cần cài đặt khô trên server Docker. Phiên bản mới nhất của mã binary khô có sẵn trên trang phát hành GitHub của Dry .

Download version mới nhất của binary dry-linux-amd64 , là v0.9-beta.3 tại thời điểm xuất bản.

  • wget https://github.com/moncho/dry/releases/download/v0.9-beta.3/dry-linux-amd64

Tiếp theo, di chuyển và đổi tên file binary mới từ dry-linux-amd64 thành /usr/local/bin/dry .

  • sudo mv dry-linux-amd64 /usr/local/bin/dry

/usr/local/bin là vị trí tiêu chuẩn được sử dụng để lưu trữ các file binary cho các chương trình local tới server . Di chuyển file binary khô đến folder đó cũng cho ta khả năng gọi lệnh khô trên dòng lệnh từ bất kỳ đâu trong server vì folder đó có trong biến môi trường $PATH của shell .

Thay đổi quyền của file binary bằng chmod để cho phép bạn thực thi nó.

  • sudo chmod 755 /usr/local/bin/dry

Bạn có thể kiểm tra rằng dry bây giờ đã tiếp cận và làm việc một cách chính xác bằng cách chạy chương trình với nó -v tùy chọn.

  • dry -v

Thao tác này sẽ trả về số version và chi tiết bản dựng:

Version Details Output
dry version 0.9-beta.2, build d4d7a789

Bây giờ cái khô đó đã được cài đặt , hãy thử sử dụng nó.

Bước 2 - Tương tác với Docker Containers

Chạy khô để hiển thị console của nó trong terminal của bạn.

  • dry

Đầu trang tổng quan có thông tin về server và phần mềm Docker, như version Docker, version API Docker Engine, server có phải là nút người quản lý / công nhân hỗ trợ Docker Swarm hay không, tên server và tài nguyên của server .

Dưới cùng của console có tham chiếu cho các phím chuyển mà bạn có thể sử dụng để truy cập các phần khác nhau của khô:

Navigation key options
[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter | [m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands

Bất cứ lúc nào, bạn có thể sử dụng F5 để làm mới màn hình của Dry nếu có lỗi với kết xuất của nó.

Bản thân console này được mặc định là danh sách Vùng Containers khi bạn mới bắt đầu làm khô. Chế độ xem này cho phép bạn xem trạng thái chung của các containers của server lưu trữ.

Nếu bạn đang sử dụng ví dụ về ngăn xếp containers Wordpress, MariaDB và PHPMyAdmin từ các hướng dẫn tiên quyết, bạn sẽ thấy ba containers mới được soạn đó được liệt kê:

Hình ảnh console  khô

Sử dụng các mũi tên lên và xuống trên bàn phím của bạn để chọn containers Wordpress, sau đó nhấn ENTER .

Thao tác này sẽ hiển thị một số thông tin về containers ở đầu màn hình, như ánh xạ cổng, liên kết mạng và địa chỉ IP containers mạng:

Wordpress Container Statistics
Container Name: wordpress_wordpress_1 ID: f67f9914b57e Status: Up 13 minutes Image: wordpress Created: About an hour ago Command: docker-entrypoint.sh apache2-foreground Port mapping: 0.0.0.0:8080->80/tcp Network Name: bridge IP Address: 172.17.0.3 Labels 6

Khi bạn chọn một containers , trung tâm phía dưới của màn hình cũng sẽ hiển thị một danh sách mới các tùy chọn có thể chọn:

  • Fetch logs , tương đương với docker logs lệnh Docker Engine. Điều này rất hữu ích để gỡ lỗi và khắc phục các lỗi trong containers .

  • Kill container , bạn có thể sử dụng cách này nếu containers không phản hồi và không thoát như bình thường.

  • Remove container , bạn có thể sử dụng cái này để loại bỏ sạch sẽ các container không cần thiết.

Cảnh báo : Các tùy chọn Remove Container Kill containerRemove Container được đưa ra ngay lập tức và không có dấu nhắc xác nhận , vì vậy hãy thận trọng.

  • Inspect container , tương đương với docker container inspect của docker container inspect .

  • Restart , sẽ dừng và khởi động lại một containers . nhanh hơn nhiều so với việc gõ các lệnh Docker Engine để khởi động lại hoặc truy vấn trạng thái của containers .

  • Show image history , liệt kê các lệnh được sử dụng để xây dựng hình ảnh của containers . Những “lớp” này được tạo ra trong quá trình xây dựng hình ảnh và là kết quả của các lệnh / hành động được cung cấp trong Dockerfile . Với tùy chọn này, ta có thể xem cách chính xác containers đã được tạo bằng cách sử dụng Docker image cơ sở.

  • Stats + Top , bao gồm thông tin như mức sử dụng CPU, mức tiêu thụ bộ nhớ, lưu lượng mạng vào và ra, hoạt động của hệ thống file , tổng số ID quy trình và tổng thời gian hoạt động của containers tổng thể. Nó cũng bao gồm một danh sách tiến trình , có chức năng giống hệt với kết quả của top .

  • Stop , ngăn một container . Bạn có thể sử dụng F2 để chuyển đổi các containers trên chế độ xem Containers để bao gồm các vùng Containers currently stopped and active , đồng thời bạn có thể khởi động lại containers đã dừng bằng tùy chọn Restart sau khi chọn.

Nhấn phím ESC để quay lại phần Containers root của console . Từ đây, ta sẽ xem xét phần Images .

Bước 3 - Tương tác với Docker Images

Từ phần Containers , nhấn 2 để truy cập phần Images khô.

Phần hình ảnh

Phần này cung cấp quyền truy cập dễ dàng hơn vào lệnh docker image inspect . Dry cũng có một số phím tắt thuận tiện ở đây, bạn có thể thấy trong thanh chuyển :

  • CTRL+D để Remove Dangling , " dung lượng treo" đề cập đến các dung lượng containers khác không còn được tham chiếu bởi bất kỳ containers nào và do đó dư thừa. Thông thường trong Docker trên dòng lệnh, thao tác này sẽ liên quan đến lệnh docker volume rm và cờ dangling=true , cộng với data volumes đích.
  • CTRL+E cho Remove , tương đương với docker rmi , cho phép bạn xóa hình ảnh miễn là không có containers nào được tạo từ hình ảnh đó vẫn hoạt động và đang chạy.
  • CTRL+F cho Force Remove , cho phép bạn xóa mạnh hình ảnh được đánh dấu như thể sử dụng docker rmi --force .
  • I cho History , hiển thị cùng một dữ liệu như Show Image History trong phần Containers .

Lúc này, ta đã thấy các phần chứa và hình ảnh khô. Phần cuối cùng để khám phá là các mạng.

Bước 4 - Tương tác với Mạng Docker

Từ phần Images , nhấn 3 để truy cập phần Networks .

Trang tổng quan Docker Networks

Phần này lý tưởng để xác minh các liên kết mạng và cấu hình mạng của containers Docker.

Bạn có thể xóa một mạng khỏi Docker bằng CTRL+E , mặc dù bạn không thể xóa các mạng Docker mặc định được định nghĩa như bridge . Tuy nhiên, như một ví dụ, bạn vẫn có thể thử xóa bridge bằng cách chọn nó bằng các phím mũi tên và nhấn ENTER . Bạn sẽ thấy một đoạn kết quả dài như thế này:

Output
. . . "Containers": { "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": { "Name": "wordpress_wordpress_db_1", "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" }, "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": { "Name": "wordpress_wordpress_1", "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16", "MacAddress": "02:42:ac:11:00:04", "IPv4Address": "172.17.0.4/16", "IPv6Address": "" }, "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": { "Name": "wordpress_phpmyadmin_1", "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78", "MacAddress": "02:42:ac:11:00:03", "IPv4Address": "172.17.0.3/16", "IPv6Address": "" } }, . . .

Phần kết quả ở trên hiển thị địa chỉ IP mạng và địa chỉ MAC của các liên kết containers và mạng bridge chứa. Từ đó, bạn có thể xác minh tất cả các containers đều là thành viên của mạng bridge và có thể giao tiếp, đây là dấu hiệu cơ bản cho thấy mạng containers là hợp lệ.

Sử dụng ESC để đóng kết quả mạng. Bây giờ ta đã xem xét các phần Containers , ImagesNetworks khô, hãy chuyển sang chức năng giám sát của Khô.

Bước 5 - Giám sát Docker Container

Nhấn phím M để có cái nhìn tổng quan ngắn gọn về tất cả các containers đang chạy của bạn trên server / server lưu trữ hiện tại. Màn hình này có thể được truy cập từ bất kỳ phần root nào của khô, như Vùng Containers , ImagesNetworks .

Hình ảnh chế độ giám sát

Các phần của thông tin này được liệt kê ở nơi khác trong chương trình (chẳng hạn như bên trong Stats + Top Tùy chọn containers Stats + Top ) nhưng chế độ xem này cung cấp vị trí trung tâm cho thông tin trên tất cả các containers , cho phép bạn theo dõi toàn bộ ngăn xếp. Điều này rất hữu ích khi quản lý số lượng lớn hơn các container .

Nhấn Q để thoát khỏi trang tổng quan. Từ đây, ta sẽ cài đặt khô với Docker Swarm.

Bước 6 - Cài đặt khô trên Docker Swarm Cluster Manager (Tùy chọn)

Từ máy tính local của bạn, sử dụng docker-machine để SSH vào nút quản lý cụm được chỉ định. Trong hướng dẫn yêu cầu cho Docker Swarm, điều này được đặt là node-1 .

  • docker-machine ssh node-1

Để chứng minh một phương pháp cài đặt khô khác, hãy curl lệnh cài đặt chính thức và chạy nó. Nếu bạn muốn tránh những curl ... | sh mẫu curl ... | sh , bạn có thể cài đặt khô như ở Bước 1.

  • curl -sSf https://moncho.github.io/dry/dryup.sh | sh

Lệnh cài đặt sẽ tự động di chuyển file binary khô sang /usr/local/bin :

Output
dryup: Moving dry binary to its destination dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

Cập nhật các quyền trên file binary , giống như ta đã làm ở Bước 1.

  • sudo chmod 755 /usr/local/bin/dry

Bây giờ hãy thử chạy khô.

  • dry

Ở phía trên bên phải của đầu Containers phần, các SwarmNode role dòng trạng thái đó đã trống trong các bước trước đó bây giờ được dân cư:

Output
Swarm: active Node role: manager Nodes: 3

Bạn cũng sẽ thấy hai containers có tên hình ảnh dài được liệt kê. Ba containers khác được trải ra giữa các node Swarm worker khác và được dịch vụ ví dụ webserver xác định từ hướng dẫn yêu cầu .

Quá trình cài đặt khô của trình quản lý cụm đã sẵn sàng, vì vậy hãy xem cách thức hoạt động của Dry với Docker Swarm tiếp theo.

Bước 7 - Tương tác với Docker Swarm Nodes (Tùy chọn)

Từ phần Containers , nhấn 4 để chuyển đến phần Nodes .

Phần nút trên console

Phần này hiển thị một số chỉ số hữu ích cho mỗi nút, như role của nó (người quản lý hoặc công việc), trạng thái và tính khả dụng. Dòng ở đầu màn hình hiển thị thông tin tiêu thụ tài nguyên.

Từ đây, sử dụng các phím mũi tên để chọn node-2 , sau đó nhấn ENTER . Điều này sẽ kéo lên các nhiệm vụ của từng nút:

node-2 Tasks Dashboard

Về dịch vụ webserver , node-2 chứa đầu tiên và thứ hai trong số năm containers được nối mạng. Các việc trong chế độ xem này cho thấy rằng Trạng thái CURRENT STATE của hai containers đang hoạt động và liệt kê khoảng thời gian chúng đã chạy. Việc đánh số tên containers của bạn ở đây có thể khác nhau. Nó phụ thuộc vào nút công nhân nào mà các containers được phân bổ, được xác định bởi lệnh dịch vụ Docker.

Quay lại phần Nodes bằng cách nhấn ESC để ta có thể khám phá một số cách kết hợp phím của Dry tại đây.

Một tác vụ phổ biến khi sử dụng Docker Swarm là thay đổi trạng thái hoặc tính khả dụng của một số nút nhất định. Đánh dấu node-1 và nhấn CTRL+A để xem dấu nhắc Set Availability .

Output
Changing node availability, please type one of ('active'|'pause'|'drain')

Nhập drain và xác nhận nó bằng ENTER .

Tùy chọn thoát ngăn một nút nhận các hướng mới từ trình quản lý cụm Swarm và thường được sử dụng để bảo trì theo kế hoạch. Sử dụng thoát cũng nghĩa là người quản lý nút chạy một bản sao trên một nút riêng biệt được đặt thành tính khả dụng hoạt động, bù đắp cho thời gian ngừng hoạt động tạm thời của nút thoát.

Khi bạn gửi lệnh drain , thông báo trạng thái ở trên cùng bên trái sẽ xác nhận hành động:

Bạn sẽ thấy trong thông báo trạng thái xuất hiện ở trên cùng bên trái, xác nhận hành động này. Thay đổi này cũng được phản ánh trong cột AVAILABILITY :

Output
Node iujfrchorop9mzsjswrclzcmb availability is now drain

Bạn cũng sẽ nhận thấy sự thay đổi được phản ánh trong cột AVAILABILITY .

Để đưa node-2 trở lại, hãy đánh dấu nút đó và nhấn CTRL+A để đưa dấu nhắc Set Availability trở lại. Lần này, nhập active và nhấn ENTER .

Bạn cũng sẽ thấy thông báo xác nhận cho hành động này:

Output
Docker daemon: update wrclzcmb availability is now active

Tùy chọn ta đã không sử dụng, pause , tạm thời dừng tất cả các quy trình trong mỗi containers được tìm thấy trong nút cho đến khi chúng được đặt là active trở lại.

Trong bước cuối cùng, ta sẽ tương tác với các dịch vụ Docker Swarm.

Bước 8 - Tương tác với Docker Swarm Services (Tùy chọn)

Nhấn phím 5 để xem khô phần Services .

Phần Dịch vụ  Control panel

Hướng dẫn yêu cầu chỉ cài đặt một dịch vụ, webserver , được cài đặt để sao chép các version (tức là tạo containers mới) khi cần thiết lên đến tối đa năm. Chế độ xem này xác nhận 5/5 bản sao đang hoạt động và hiển thị ánh xạ cổng mà dịch vụ đang sử dụng cũng như các việc phân tán của nó.

Ta có thể sử dụng khô để xem chi tiết hơn về dịch vụ. Nhấn ENTER khi dịch vụ webserver được tô sáng.

Tóm tắt tác vụ của  web server  trên console

Chế độ xem dịch vụ chi tiết này chứa rất nhiều thông tin về trạng thái của dịch vụ và các node Swarm của nó.

Thật thú vị, bạn có thể nhận thấy rằng có bảy tác vụ được liệt kê ở đây, mặc dù dịch vụ được đặt thành năm. Điều này là do Docker Swarm đã tạo thêm hai tác vụ sao chép bổ sung trước đó từ thử nghiệm ở Bước 7, khi ta chuyển node-2 sang chế độ thoát.

Ta cũng có thể sử dụng khô để tăng số lượng bản sao tối đa. Nhấn ESC để quay lại phần Services , sau đó nhập CTRL+S trong khi đánh dấu dịch vụ webserver . Điều này sẽ kéo lên dấu nhắc mở rộng:

Output
Scale service. Number of replicas?

Trong bối cảnh, việc mở rộng dịch vụ này sẽ hữu ích để đáp ứng mọi nhu cầu về tài nguyên bổ sung do lưu lượng truy cập web ngày càng tăng. Hãy tăng số lượng bản sao lên 8 bằng lệnh 8 vào dấu nhắc và nhấn ENTER .

Kiểm tra thông báo xác nhận này để xác nhận hành động:

Output
Docker daemon: update v6gbc1ms0pi scaled to 8 replicas

Bạn có thể xem danh sách chế độ xem Services 8/8 bản sao cho dịch vụ ngay bây giờ.

Nếu bạn muốn xóa hoàn toàn một dịch vụ, hãy đánh dấu nó và nhấn CTRL+R để hiển thị dấu nhắc xóa dịch vụ:

Output
About to remove the selected service. Do you want to proceed? y/N

Bạn có thể sử dụng quyền này để xóa dịch vụ webserver nếu bạn không còn cần hoặc không muốn chạy nó nữa.

Cuối cùng, nhấn Q để thoát khỏi console và thoát khỏi chương trình.

Kết luận

Theo hướng dẫn này, bạn đã cài đặt hoàn chỉnh trên server Docker và trình quản lý cụm Docker Swarm. Hướng dẫn này cũng bao gồm các yếu tố cơ bản về chức năng của dry, như tương tác với các containers Docker, hình ảnh và mạng cũng như các dịch vụ và nút Docker Swarm.

Có một phương pháp thứ hai để kết nối khô với server từ xa đang chạy Docker, đó là sử dụng tùy chọn -H với địa chỉ IP của server từ xa khi chạy cạn. Điều này hữu ích trong những trường hợp bạn không thể hoặc không quan tâm đến việc cài đặt file binary khô khan.

Từ đây, hãy thử áp dụng khô cho các cài đặt Docker của bạn để khám phá cách nó có thể hợp lý hóa quy trình làm việc của bạn. Bạn có thể khám phá các liên kết chính bổ sung của Dry trong GitHub README .


Tags:

Các tin liên quan

Cách tạo image Docker và lưu trữ kho lưu trữ image Docker với GitLab
2018-02-12
3 Mẹo để Đặt tên container Docker
2018-01-04
3 Mẹo để Đặt tên container Docker
2018-01-04
Cách cài đặt Docker Compose trên Ubuntu 16.04
2017-12-21
Cách sử dụng Traefik làm Reverse Proxy cho Docker Containers trên Ubuntu 16.04
2017-09-08
Cách tập trung log Docker của bạn với Fluentd và ElasticSearch trên Ubuntu 16.04
2016-12-16
Cách làm việc với Docker Data Volumes trên Ubuntu 14.04
2016-11-17
Làm việc với Docker Containers
2016-11-04
Cách cấu hình môi trường kiểm tra tích hợp liên tục với Docker và Docker Compose trên Ubuntu 14.04
2016-11-03
Cách cấu hình môi trường kiểm tra tích hợp liên tục với Docker và Docker Compose trên Ubuntu 16.04
2016-11-03