Cách quản lí và Kiểm soát Docker Container với dry trên Ubuntu 16.04

1 năm trước

Cách quản lí và Kiểm soát Docker Container với dry trên Ubuntu 16.04

Mở đầu

dry Monitoring GIF

dry là một ứng dụng terminal đơn giản được xây dựng để hoạt động với các Docker container và các image. Sử dụng dry loại bỏ việc lặp đi lặp lại các lệnh Docker Engine và cung cấp một giao diện dòng lệnh khác thay thế cho Docker CLI.

dry có khả năng khởi động hoặc dừng container một cách nhanh chóng, an toàn, xóa triệt để các Docker image, giám sát các tiến trình trên container liên tục trên thời gian thực, và truy cập ouput của các lệnh  infoinspecthistory, và log trong Docker một cách dễ dàng.

Hầu hết các lệnh có thể được thực hiện thông qua Docker Engine CLI có thể được thực thi dễ dàng trong dry, với các hành vi và kết quả tương tự. Chức năng bổ sung của dry, Docker Swarm, cung cấp một cách hiệu quả để theo dõi và quản lý các thiết lập của những multi-host container.

Trong bài viết này, ta sẽ cài dry và khám phá một số tính năng của nó:

  • Tương tác với Docker container, image và network
  • Giám sát Docker container
  • Tương tác với các node và dịch vụ của Docker Swarm
 

Yêu cầu

 

 

Bước 1 — Cài dry

Đầu tiên ta cần cài dry trên Docker server. Gói nhị phân mới nhất của dry nằm trên trang phát hành GitHub của dry.

Tải bản mới nhất của dry-linux-amd64 ở thời điểm bài viết là v0.9-beta.3 

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

Tiếp theo dịch chuyển file dry-linux-amd64 đến/usr/local/bin/dry.

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

/usr/local/bin là đường dẫn chuẩn cho các file nhị phân cho các chương trình của server. Việc chuyển file nhị phân của dry đến địa chỉ này cũng cho phép ta sử dụng giao diện dòng lệnh của dry on từ bất cứ đâu trên server.

Thay đổi quyền sở hữu của file nhị phân thành chmod để cài nó.

sudo chmod 755 /usr/local/bin/dry 

Kiểm tra xem dry đã sử dụng được chưa với cờ -v.

dry -v 

Bạn sẽ thu được phiên bản của dry:

Version Details Outputdry version 0.9-beta.2, build d4d7a789

 

Bước 2 — Thao tác với Docker Containers

Chạy dry để áp dụng các lệnh điều khiển của nó đến terminal.

dry 

Phía trên cùng của bảng điều khiển có thông tin về máy chủ và bản Docker được cài trên nó, như phiên bản Docker, phiên bản Docker Engine API, server được kích hoạt Docker- Swarm  ở chế độ worker hay manager, cùng hostname và các tài nguyên hiện có trên server.

Phía dưới là danh sách các phím điều khiển của dry:

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ạn có thể bấm F5 bất cứ lúc nào để refresh dry khi xảy ra lỗi.

 

Mặc định khi bạn khởi động dry,  danh sách Containers sẽ được hiển thị.

Nếu đang sử dụng gói container Wordpress, MariaDB, và PHPMyAdmin được đề cập đến trong phần yêu cầu, bạn sẽ thấy 3 container đó được liệt kê:

dry Dashboard Image

Dùng các phím mũi tên để chọn container Wordpress rồi bấm ENTER.

Một vài thông tin về container sẽ được hiển thị bên trên màn hình, như thông tin về cổng, liên kết mạng, và địa chỉ IP của container :

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

Bạn sẽ có những tùy chọ sau với một container:

  • Fetch logs, giống với lệnh docker logs của Docker Engine. Tùy chọn này có ích trong việc debug và phát hiện lỗi bên trong container.

  • Kill container, dùng để ngừng container gặp lỗi.

  • Remove container, dùng để xóa các containers không cần thiết một cách sạch sẽ.

Cảnh báo: Lệnh Kill container và Remove Container được thực hiện ngay lập tức và không có câu hỏi xác nhận thực hiện lệnh, nên hãy thận trọng.

  • Inspect container, giống với lệnh docker container inspect.

  • Restart, giúp ngừng và khởi động lại container. Lựa chọn này rất tiện lợi vì thao tác nhanh hơn nhiều so với lệnh Docker Engine giúp restart hoặc truy vấn trạng thái của một container.

  • Show image history, liệt kê danh sách các lệnh ta đã dùng để build image của containe. Các "tầng" được sinh ra trong quá trình build image và là kết quả của các lệnh trong Dockerfile. Với tùy chọn này, ta có thể biết chính xác container đã được tạo dựa trên Docker image gốc như thế nào.

  • Stats + Top, bao gồm các thông tin như tình trạng sử dụng CPU, tổng bộ nhớ, lưu lượng dữ liệu vào ra.... Nó cũng bao gồm một danh sách các tiến trình đang chạy, tương tự với kết quả của lệnh top.

  • Stop, dừng một container. Bạn có thể bấm F2 đổi container trên danh sách Containers để thêm vào currently stopped and active, sau đó bạn có thể restart một container với tùy chọn Restartt.

Bấm ESC để trở lại mục root Containers của bảng điều khiển. Giờ ta sẽ chuyển qua mục Images .

 

Bước 3 — Tương tác với Docker Image

 

Từ mục Containers , bấm 2 để chuyển sang mục Images.

Images Section

Mục này cho phép ta thực hiện dễ dàng hơn lệnh docker image inspect . dry cso một vài phím tắt như sau:

  • CTRL+D tương đương với Remove Dangling."dangling volumes” đề cập đến các container volume không còn được sử dụng bởi bất cứ container nào. Trong Docker CLI, nó tương đương với lệnh docker volume rm được thực hiện với cờ dangling=true và data volume cần xóa.
  • CTRL+E tương đương với Remove, tương đương với lệnh docker rmi , cho phép gỡ bỏ image khi không có container nào được tạo từ nó đang chạy.
  • CTRL+F tương đương với Force Remove, cho phép bạn bắt buộc xóa một image, giống với lệnh docker rmi --force.
  • I tương đương với History, hiển thị dữ liệu giống tùy chọn Show Image History trong mục Containers.

Bước 4 — Tương tác với Docker Network

Bấm 3 để vào mục Networks.

Docker Networks Dashboard

Mục này lí tưởng cho việc kiểm tra các liên kết và cấu hình mạng cho Docker container.

Bạn có thể xóa mạng cho Docker bằng CTRL+E, tuy nhiên bạn không thể gỡ những gói Docker network mặc định như bridge. Giả sử nếu cố xóa gói này, bạn sẽ thấy output như sau:

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": ""
}},
. . .
 

Các mục của output trên cho biết địa chỉ IP và địa chỉ MAC của container. Từ đây ta có thể thấy tất cả container đều là thành viên của mạng bridge và có thể giao tiếp với nhau, biếu hiện cho mạng container đang hoạt động bình thường.

Dùng phím ESC để đóng ouput.

 

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

Press the M key for a quick condensed overview of all of your running containers on the current server/host. This screen can be accessed from any of the root sections of dry, like ContainersImages, and Networks.

Monitor Mode Image

Portions of this information are listed elsewhere in the program (such as inside the Stats + Top container options) but this view provides a central location for information on all containers, which allows you to monitor the entire stack. This is useful when managing larger quantities of containers.

Press Q to exit the dashboard. From here, we'll set up dry with Docker Swarm.

 

Bước 6 — Cài đặt dry trên Trình quản lí cụm Docker Swarm  (Không bắt buộc)

Từ máy tính của bạn, dùng lệnh docker-machine để SSH vào một node trong cụm, ở đây là node-1.

docker-machine ssh node-1 

Dùng lệnh curl để cài dry qua đoạn script nhị phân với lệnh:

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

Đoạn mã script nhị phân sẽ tự động được chuyển đến /usr/local/bin:

Outputdryup: 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'

Thay đổi quyền truy cập gói với lệnh:

sudo chmod 755 /usr/local/bin/dry 

Chạy dry.

dry 

Phía trên bên phải mục Containers, dòng trạng thái Swarm và Node role sẽ được hiển thị các giá trị:

OutputSwarm: active 
Node role: manager 
Nodes: 3
 

Bước 7 — Tương tác với các Node của Docker Swarm (Không bắt buộc)

Từ mục Containers , bấm 4 để chuyển sang mục Nodes.

Dashboard Nodes Section

Mục này cho ta biết một vài thông số của các node, như vai trò (manager hay worker),trạng thái, và tính khả dụng.

Dùng các phím mũi tên để chọn node-2, rồi bấm ENTER. Bạn sẽ thấy một vài tác vụ riêng biệt trên node:

node-2 Tasks Dashboard

Trong dịch vụ webservernode-2 giữ 2 trong số 5 container được kết nối. Các tiến trình cho thấy CURRENT STATE của hai container là "ACTIVE", và chúng đã chạy trong bao lâu. Việc đánh số các container của bạn phụ thuộc vào worker node đanh chứa container đó, được đề cập đến trong lệnh Docker serverice

Trở lại mục Nodes bằng cách bấm ESC .

Một việc cần làm với Docker Swarm là thay đổi trạng thái hay tính khả dụng của các node. Chọn node-1 rồi bấm CTRL+A để Set Availability :

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

Gõ drain rồi bấm ENTER.

Tùy chọn này ngăn một node nhận những lệnh khác từ Swarm cluster manager, được sử dụng cho việc bảo trì. Sử dụng drain cũng khiển trình quản lí node chạy một bản sao của node đó trên một node riêng biệt được thiết lập để hoạt động trong thời gian node drain được bảo trì.

Bạn sẽ thấy thông báo sau xuất hiện:

Output
Node iujfrchorop9mzsjswrclzcmb availability is now drain 

Thay đổi này cũng tác động lên cột AVAILABILITY.

Để kích hoạt lại node-2, chọn nó rồi bấm CTRL+A để vào lại Set Availability. Lần này gõ  active rồi bấm ENTER.

OutputDocker daemon: update wrclzcmb is now active

Tùy chọn pause mà ta không dùng tới ở đây có tác dụng tạm dừng các xử lí trong container của node đó đến khi nó được active trở lại.

 

Bước 8 — Tương tác với Dịch vụ Docker Swarm (Không bắt buộc)

Bấm 5 để xem mục Services của dry.

Dashboard Services Section

Ta mới chỉ thiết lập một dịch vụ là webserver, nhằm mục đích nhân bản ( chẳng hạn tạo container mới) khi cần thiết với số lượng tối đa là 5. Hình trên cho thấy cả 5/5 bản sao đã được kích hoạt, cùng một vài thông số khác

Ta có thể dùng dry để xem nhiều thông tin hơn về dịch vụ. Bấm ENTER sau khi chọn dịch vụ webserver:

Dashboard webserver Task Summary

Bạn có thể thấy có 7 tác vụ được liệt kê, mặc dù tối đa chỉ có 5, do Docker Swarm đã tạo thêm hai tác vụ khác từ bước 7 khi ta chuyển node-2 về chế độ drain.

Bạn cũng có thể dùng dry để thay đổi số lượng tối đa của các bản sao. Bấm ESC để trở lại mục Services rồi bấm CTRL+S sau khi chọn vào webserver:

OutputScale service. Number of replicas?

Trong hoàn cảnh này, mở rộng dịch vụ này sẽ có ích để đáp ứng mọi nhu cầu cho các tài nguyên bổ sung do lưu lượng truy cập web tăng. Tăng số tác vụ lên 8 rồi bấm ENTER.

Xác nhận lệnh:

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

Bạn có thể thấy Services hiển thị 8/8 bản sao

Nếu muốn xóa một dịch vụ, bấm CTRL+R :

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

Bấm Q để thoát khỏi dry.

 

Tổng kết

Hướng dẫn này đã giúp bạn thiết lập dry trên một Docker host và trình quản lý cụm Docker Swarm, làm quen với các chức năng của dry như tương tác với Docker container, image, với mạng lưới các container cũng như các node và dịch vụ của Docker Swarm.