Trong bài viết đầu tiên, “Tạo một cụm Docker Swarm trên Azure Container Service”, chúng tôi đã thảo luận về việc tạo một cụm Docker Swarm trên Azure Container Service (ACS). Mỗi máy ảo (chủ hoặc đại lý) đều có Docker chạy khi Swarm được tạo. Trong bài viết tiếp theo này, chúng ta sẽ thảo luận về việc sử dụng Docker trên Swarm được tạo trên Azure Container Service. Chúng ta sẽ thảo luận về việc sử dụng cả Docker độc lập và dịch vụ chế độ Docker Swarm. Bài viết này có các phần sau:
- Thiết lập Môi trường
- Thông tin về danh sách Docker
- Chạy Hình ảnh Docker Xin chào Thế giới
- Chạy hình ảnh Nginx Docker
- Liệt kê các vùng chứa Docker
- Truy cập Vùng chứa Nginx Docker trong một trình duyệt
- Xóa vùng chứa Docker
- Đang khởi chạy Chế độ bầy đàn Docker
- Tạo Dịch vụ Docker
- Liệt kê các dịch vụ Docker
- Liệt kê các Nhiệm vụ Dịch vụ Docker
- Liệt kê các vùng chứa Docker cho Dịch vụ Docker
- Nhật ký khám phá được tạo bởi vùng chứa dịch vụ Docker
- Kết luận
Thiết lập Môi trường
Sử dụng cùng một môi trường như trong bài viết đầu tiên, “Tạo một cụm Docker Swarm trên Azure Container Service.” Tạo một cụm Swarm trên ACS, như đã thảo luận trong bài viết. Trong bài viết này, chúng tôi sẽ sử dụng cụm Swarm bao gồm ba nút chính và một nút tác nhân để chạy một vùng chứa Docker độc lập và một dịch vụ chế độ Docker Swarm.
Thông tin về danh sách Docker
Khởi động Cloud Shell như đã thảo luận trong bài viết “Tạo một cụm Docker Swarm trên Azure Container Service.” Kết nối với một máy ảo chính Swarm bằng cách sử dụng khóa riêng SSH RSA, tên người dùng và Địa chỉ IP công cộng của máy chủ đó, như đã thảo luận trong phần trước. Lệnh SSH để kết nối với máy ảo chính như sau; khóa cá nhân SSH RSA, tên người dùng và địa chỉ IP Công cộng sẽ khác nhau đối với những người dùng khác nhau.
ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]
Một kết nối được thiết lập và một dấu nhắc lệnh cho máy ảo chính sẽ được hiển thị.
[email protected]:~ $ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]ào mừng bạn đến với Ubuntu 14.04.4 LTS (GNU / Linux 3.19.0-65-generic x86_64) * Tài liệu:https://help.ubuntu.com/ Thông tin hệ thống kể từ Thứ Ba ngày 10 tháng 10 22:40:17 UTC 2017 Tải hệ thống:0,27 Quy trình:131 Mức sử dụng /:4,2% của 28,80GB Người dùng đã đăng nhập:0 Sử dụng bộ nhớ :2% địa chỉ IP cho eth0:172.16.0.5 Sử dụng hoán đổi:0% địa chỉ IP cho docker0:172.17.0.1 Vẽ biểu đồ dữ liệu này và quản lý hệ thống này tại:https://landscape.canonical.com/ Nhận hỗ trợ Cloud với Ubuntu Advantage Cloud Khách:http://www.ubuntu.com/business/services/cloud Đã có bản phát hành mới '16 .04.3 LTS '. Chạy 'do-release-upgrade' để nâng cấp lên nó. Đăng nhập lần cuối:Thứ Ba ngày 10 tháng 10 22:40:17 2017 từ 40.78.30.37
Ba nút chính đã được định cấu hình trong Swarm được cung cấp trong bài viết “Tạo một cụm Docker Swarm trên Azure Container Service.” Số lượng máy ảo chính có thể là 1, 3 hoặc 5. Khi chạy nhiều máy ảo chính, lệnh SSH để kết nối với từng máy ảo chính là giống nhau ngoại trừ cổng SSH, là 2200 đối với 1 máy chủ, 2201 đối với cái 2, 2202 cho cái 3, 2203 cho cái 4, và 2204 cho cái 5. Với ba máy ảo chính, các cổng SSH được sử dụng là 2200, 2201 và 2202. Để kết nối với một máy chủ 2, lệnh SSH như sau:
[email protected]:~ $ ssh -i /home/deepak/.ssh/id_rsa -p 2201 [email protected]
Và, lệnh SSH để kết nối với 2 cái như sau:
[email protected]:~ $ ssh -i /home/deepak/.ssh/id_rsa -p 2202 [email protected]
Daemon Docker đang chạy ở 172.16.0.5:2375 . Để hiển thị thông tin trên toàn hệ thống, hãy chạy thông tin docker yêu cầu. Đầu ra (một phần) từ lệnh được liệt kê:
[email protected]:~ $ docker -H 172.16.0.5:2375 infoContainers:0 Running:0 Paused:0 Stopped:0Images:0Role:primaryStrategy:spreadNodes:1 swarm-agent-D50F2361000001:10.0.0.5:2375Is Trình quản lý:false Kernel Phiên bản:3.19.0-65-generic Hệ thống hoạt động:linux Kiến trúc:amd64CPUs:2 Tổng bộ nhớ:7.145GiB
Chạy hình ảnh Hello World Docker
Mỗi máy ảo trong ACS Swarm là một máy chủ Docker và một vùng chứa Docker độc lập có thể chạy trên bất kỳ máy ảo Swarm nào. Ví dụ:chạy hình ảnh Docker “hello-world” trên một máy ảo chính.
[email protected]:~ $ docker run hello-world Có thể tìm thấy hình ảnh 'hello-world:mới nhất' locallatest:Kéo từ thư viện / hello-world5b0f327be733:Kéo hoàn tấtDigest:sha256:b2ba691d8aac9e5ac3644c0788e3d3823f9e97e7457 mới tải xuống image hello world:newHello from Docker! Thông báo này cho thấy rằng cài đặt của bạn dường như đang hoạt động chính xác. Để tạo ra thông báo này, Docker thực hiện các bước sau:1. Docker client đã liên hệ với Docker daemon. 2. Docker daemon đã lấy hình ảnh "hello-world" từ Docker Hub. 3. Daemon Docker đã tạo một vùng chứa mới từ hình ảnh đó, vùng chứa này chạy tệp thực thi tạo ra kết quả mà bạn hiện đang đọc. 4. Daemon Docker phát trực tiếp đầu ra đó tới ứng dụng khách Docker, ứng dụng này sẽ gửi nó đến thiết bị đầu cuối của bạn. Để thử một thứ gì đó tham vọng hơn, bạn có thể chạy một vùng chứa Ubuntu với:$ docker run -it ubuntu bash ID Docker miễn phí:https://cloud.docker.com/ Để biết thêm ví dụ và ý tưởng, hãy truy cập:https://docs.docker.com/engine/userguide/[email protected]:~$
Hình ảnh Docker hello-world đang chạy trên máy ảo chính Swarm chứ không phải trên Swarm. Máy ảo chính chỉ là một trong những máy ảo trong Swarm. Docker Swarm đang lắng nghe điểm cuối 172.16.0.5:2375. Để chạy các vùng chứa Docker trên Swarm, điểm cuối của Swarm phải được cung cấp, như chúng ta sẽ thảo luận trong phần tiếp theo. Khi một vùng chứa Docker được chạy trên một Swarm, Swarm chính sẽ chỉ định một tác nhân Swarm để chạy vùng chứa Docker.
Chạy hình ảnh Nginx Docker
hello-world Hình ảnh Docker được sử dụng trong phần trước là một hình ảnh Docker rất cơ bản, không có nhiều Dockerization và chỉ xuất ra một thông báo. Trong phần này, chúng tôi sẽ chạy một vùng chứa độc lập với hình ảnh Docker nginx cho máy chủ Nginx. Lệnh sau tạo vùng chứa Docker có tên hello-nginx và hiển thị cổng 80 trên máy chủ.
docker run --name hello-nginx -d -p 80:80 nginx
Đầu ra từ docker run lệnh được liệt kê:
[email protected]:~ $ docker run --name hello-nginx -d -p 80:80 nginx Không thể tìm thấy hình ảnh 'nginx:mới nhất' locallatest:Kéo từ thư viện / nginxbc95e04b23c0:Kéo hoàn tất110767c6efff:Kéo hoàn chỉnhf081e0c4df75:Kéo CompleteDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Đã tải xuống hình ảnh mới hơn cho nginx:newb3679edba090ff41482f3754b4d852d8pre006fac04b4d852d295985b401b0046c04ca01b0046c04docker chạy trước lệnh chạy một vùng chứa Docker trên máy ảo chính Swarm. docker chạy lệnh có thể được chạy trên Swarm bằng cách cung cấp IP và cổng của điểm cuối Swarm như sau:
[email protected]:~ $ docker -H 172.16.0.5:2375 run --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d01144d67313813ba140a5391bac8dfLiệt kê các vùng chứa Docker
Liệt kê các vùng chứa Docker trên một máy ảo chính với docker ps yêu cầu. hello-nginx Vùng chứa Docker được liệt kê. Một vùng chứa trình quản lý Swarm, không phải do người dùng tạo mà là một vùng chứa hệ thống, được tạo khi một Swarm được tạo.
Ghi chú của biên tập viên: Xin lưu ý rằng nhiều danh sách mã sau đây quá rộng để hiển thị chính xác. Vui lòng cuộn hộp mã sang bên phải để xem toàn bộ danh sách. |
[email protected]:~ $ docker psCONTAINER ID IMAGE COMMAND ĐƯỢC TẠO TRẠNG THÁI CỔNG TRẠNG THÁI NAMESb3679edba090 nginx "nginx -g 'daemon ..." 3 giây trước Lên 2 giây 0.0.0.0:80->80/tcp hello-nginxf82ebb6efa4f swarm:1.1.0 "/ swarm management --r ..." 5 phút trước Lên 3 phút 0.0.0.0:2375->2375/tcp container_swarm_1
Các vùng chứa Docker trên điểm cuối Swarm có thể được liệt kê như sau:
[email protected]:~ $ docker -H 172.16.0.5:2375 ps -aCONTAINER ID IMAGE COMMAND ĐƯỢC TẠO CỔNG TRẠNG THÁI NAMESddcbc335988f nginx "nginx -g 'daemon ..." 36 giây trước Lên 35 giây 10.0.0.5:80-> 80 / tcp swarm-agent-D50F2361000001 / hello-nginx
Vùng chứa Docker đang chạy trên tác nhân Swarm như được chỉ ra bởi tên vùng chứa Docker swarm-agent-D50F2361000001 / hello-nginx .
Truy cập vùng chứa Nginx Docker trong trình duyệt
Như đã thảo luận trước đó, khi một vùng chứa Docker được chạy trên Swarm bằng cách sử dụng điểm cuối Swarm, Swarm chính lập lịch cho vùng chứa trên một trong các tác nhân Swarm trong Swarm. Để truy cập máy chủ Nginx đang chạy trong vùng chứa Docker trên điểm cuối Swarm, phải sử dụng IP Public của tác nhân Swarm. Swarm mà chúng tôi đã sử dụng chỉ có một tác nhân Swarm. Có thể lấy IP công cộng của tác nhân Swarm từ danh sách Tài nguyên, như thể hiện trong Hình 1.
Hình 1: Địa chỉ IP công cộng của Swarm Agent
Ngoài ra, hãy nhấp vào Bộ cân bằng tải tác nhân Swarm trong Tài nguyên , như trong Hình 2.
Hình 2: Bộ cân bằng tải Swarm Agent
Trong trang chi tiết của tác nhân Swarm, hãy lấy Địa chỉ IP (xem Hình 3).
Hình 3: Địa chỉ IP của Swarm Agent
Địa chỉ IP cũng có thể được lấy từ trang chi tiết của bộ cân bằng tải tác nhân Swarm, như thể hiện trong Hình 4.
Hình 4: Swarm Agent Public IP trên trang Load Balancer
Trong trình duyệt trên máy cục bộ, hãy điều hướng đến địa chỉ IP Công cộng của tác nhân Swarm. Trang chào mừng của máy chủ Nginx được hiển thị, như trong Hình 5.
Hình 5: Gọi máy chủ Nginx trong trình duyệt
Xóa vùng chứa Docker
Để xóa vùng chứa Docker, hãy chạy docker rm yêu cầu. Không thể xóa vùng chứa Docker đang chạy. Đầu tiên, dừng vùng chứa Docker hello-nginx chạy trên bầy đàn.
[email protected]:~ $ docker -H 172.16.0.5:2375 dừng hello-nginxhello-nginx
Sau đó, vùng chứa đã dừng có thể được gỡ bỏ bằng docker rm .
[email protected]:~ $ docker -H 172.16.0.5:2375 rm hello-nginxhello-nginx
Khởi tạo Chế độ bầy đàn Docker
Như đã thảo luận trước đây, Azure Container Service Swarm không có chế độ Swarm được bật theo mặc định. Chế độ Swarm phải được khởi tạo bằng docker swarm init lệnh.
[email protected]:~ $ docker swarm init --advertise-addr 52.176.1.213 Khởi tạo âm thanh:nút hiện tại (ia4uj7431stu8y0j5h2yvdp27) hiện là trình quản lý.
Để thêm nhân viên vào bầy này, hãy chạy lệnh sau:
tham gia bầy đàn docker --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.213:2377
Để thêm người quản lý vào nhóm này, hãy chạy 'trình quản lý mã thông báo tham gia docker swarm' và làm theo hướng dẫn.
Liệt kê các nút của chế độ Swarm với nút docker ls yêu cầu. Nút quản lý Swarm được liệt kê.
[email protected]:~ $ docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Ready Active Leader
Tạo dịch vụ Docker
Sau khi khởi chạy chế độ Docker Swarm, hãy tạo dịch vụ Docker với tạo dịch vụ docker yêu cầu. Ví dụ:tạo một dịch vụ Docker bao gồm hai bản sao bằng cách sử dụng Docker image alpine và ping docker.com.
[email protected]:~ $ docker service create - replicas 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1
Ví dụ khác, tạo một dịch vụ Docker với hình ảnh Docker tutum / hello-world và hiển thị dịch vụ trên máy chủ lưu trữ trên cổng 8080.
[email protected]:~ $ docker service create> --name hello-world> --publish 8080:80> --replicas 2> tutum / hello-world3e38c1595cddg0ckmoyasrnnu
Liệt kê các dịch vụ Docker
Liệt kê các dịch vụ Docker với dịch vụ docker ls yêu cầu. Hai dịch vụ được tạo trong phần trước sẽ được liệt kê.
[email protected]:~ $ docker service lsID TÊN CHẾ ĐỘ REPLICAS HÌNH ẢNH PORTS3e38c1595cdd hello-world replicated 2/2 tutum / hello-world:new *:8080-> 80 / tcptg1ywqiyei3j helloworld replicated 2/2 núi cao:mới nhất
Liệt kê các Nhiệm vụ Dịch vụ Docker
Liệt kê các tác vụ dịch vụ Docker cho helloworld dịch vụ dựa trên hình ảnh Docker alpine .
[email protected]:~ $ docker service ps helloworldID TÊN HÌNH ẢNH NODE MONG MUỐN HIỆN TẠI CỔNG LỖI NHÀ NƯỚC HIỆN TẠI 0mal82mskbge helloworld.1 alpine:new swarm-master-D50F2361-0 Đang chạy Đang chạy 33 giây trướciqz0bqkldxs2 helloworld.2 alpine:new swarmpine.2 alarm master-D50F2361-0 Running Đang chạy 32 giây trước
Liệt kê các tác vụ dịch vụ Docker cho hello-world dịch vụ dựa trên tutum / hello-world Hình ảnh Docker.
[email protected]:~ $ docker service ps hello-worldID TÊN HÌNH ẢNH NODE MONG MUỐN CỦA NHÀ NƯỚC HIỆN TẠI CỔNG LỖI NHÀ NƯỚC HIỆN TẠIyok48ja4o835 hello-world.1 tutum / hello-world:new swarm-master-D50F2361-0 Đang chạy Đang chạy 38 giây trước x5tvcuglwzd0 hello-world.2 tutum / hello-world:new swarm-master-D50F2361-0 Running Running Running 38 giây trước
Liệt kê các vùng chứa Docker cho Dịch vụ Docker
Các vùng chứa Docker cho dịch vụ Docker trên máy chủ Docker trong Swarm có thể được liệt kê với docker ps lệnh.
[email protected]:~ $ docker psCONTAINER ID IMAGE COMMAND ĐƯỢC TẠO TRẠNG THÁI CỔNG TRẠNG THÁI NAMESb6b069102300 tutum / hello-world:new "/ bin / sh -c 'php-f ..." 6 phút trước Lên 6 phút 80 / tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum / hello-world:mới nhất "/ bin / sh -c 'php-f ..." 6 phút trước Lên 6 phút 80 / tcp hello-world.1.yok48ja4o835nc7cog8hhpjlda350b4827da350b4827da350 " pingdocker.com "7 phút trước Lên 7 phút helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:mới nhất" pingdocker.com "7 phút trước Lên 7 phút helloworld.1.0mal82mskbgecbcwh3op18nrr
Vùng chứa Docker cho hello-world và helloworld dịch vụ được liệt kê.
Nhật ký khám phá được tạo bởi vùng chứa dịch vụ Docker
Các nhật ký được tạo, nếu có, trong vùng chứa Docker cho dịch vụ Docker có thể được liệt kê cùng với nhật ký docker yêu cầu. Ví dụ:lấy ID vùng chứa cho dịch vụ dựa trên hình ảnh núi cao và liệt kê các nhật ký:
[email protected]:~ $ docker nhật ký db4827da350bPING docker.com (34.201.187.190):56 byte dữ liệu
Như đầu ra chỉ ra, miền docker.com được ping và 56 byte dữ liệu được trao đổi.
Kết luận
Trong bài viết này, chúng tôi đã thảo luận về việc sử dụng Docker trong một cụm Docker Swarm trên Azure Container Service. Chúng tôi đã sử dụng các vùng chứa Docker độc lập và các dịch vụ Docker trên Swarm. Một cụm Swarm trên ACS cho thấy một điểm cuối Swarm để chạy một vùng chứa Docker độc lập. Khi các vùng chứa Docker được chạy trên điểm cuối Swarm, thì Swarm sẽ chạy các vùng chứa Docker độc lập trên / s tác nhân Swarm. Chế độ Swarm không được bật theo mặc định và phải được khởi chạy trên máy ảo chính Swarm.