Docker trên AWS [GIỚI THIỆU TỔNG QUAN – PHẦN 1]

Tác giả: 30/08/2022

Ảo hóa Container  – tiêu biểu là Docker – là một mô hình máy chủ có thể sẽ trở thành xu hướng trong vài năm tới

Cloud là nền tảng rõ ràng và hợp lý nhất cho triển khai container.

Amazon Web Services hiện tại chiếm lĩnh phần lớn thị phần về cloud computing trên thế giới.

Trước hết, cần xác định một số thuật ngữ chính.

Virtualization (Ảo hóa)

Ảo hóa là sự phân chia các tài nguyên mạng và máy tính vật lý thành các đơn vị nhỏ hơn và linh hoạt hơn.

Thay vì chỉ định các tác vụ tính toán cụ thể cho các máy chủ vật lý riêng lẻ – đôi khi có thể quá tải hoặc không sử dụng hết tài nguyên – một máy chủ vật lý đơn lẻ có thể được chia thành các máy chủ ảo nếu cần.

Điều đó có nghĩa, có thể có hàng chục hệ điều hành được cài đặt riêng (OS) đang chạy song song trên cùng một ổ cứng. 

Nhiều ứng dụng đang được phục vụ thông qua các máy chủ vật lý hoặc thông qua máy ảo. Trên thực tế, mỗi cá thể hệ điều hành có thể được truy cập từ xa bởi cả quản trị viên và khách hàng giống hệt như bất kỳ máy chủ khác. Trong loại môi trường này, ngay khi máy chủ ảo của bạn hoàn thành nhiệm vụ hoặc trở nên không cần thiết, bạn có thể xóa ngay lập tức. Trên thực tế, máy chủ ảo ngày nay chỉ có thể hoạt động trong vài phút hoặc thậm chí vài giây trước khi hoàn thành nhiệm vụ của mình, được tắt để đảm bảo cho mọi thứ tiếp theo. Tất cả điều này cho phép sử dụng phần cứng đắt hơn. Nó cung cấp khả năng cung cấp và khởi chạy các máy chủ mới theo ý muốn, để kiểm tra các cấu hình mới hoặc thêm sức mạnh mới cho các dịch vụ sản xuất của bạn.

Các nhà cung cấp cloud như AWS sử dụng các máy tính ảo hóa của một loại này hay loại khác. Ví dụ: hàng trăm nghìn Amazon EC2 đều chạy trên công nghệ ảo hóa Xen hoặc KVM – chúng được cài đặt và chạy trên hàng ngàn máy chủ vật lý được quản lý trong các trung tâm dữ liệu của Amazon.

Dù công nghệ hypervisor đang được sử dụng, mục đích của nó là cung cấp một môi trường lưu trữ tự động cho nhiều máy tính ảo hoàn chỉnh, khép kín. Các cointainer như Docker, mặt khác, không phải là các máy ảo độc lập mà là các hệ thống tập tin được sửa đổi và chia sẻ hạt nhân hệ điều hành của máy chủ lưu trữ vật lý của chúng. 

Containers 

Containers là gì? Nó không phải là hypervisors. Thay vào đó, chúng là các máy chủ ảo cực kỳ nhẹ, thay vì chạy như các hệ điều hành hoàn chỉnh, nó chia sẻ hạt nhân cơ bản của hệ điều hành máy chủ vật lý. Ảo hóa container chạy với quyền truy cập vào nguồn hạt nhân của máy chủ và tài nguyên phần cứng

Các container có thể được xây dựng từ plain-text scripts, được tạo ra và được khởi chạy trong vài giây và chia sẻ dễ dàng và tin cậy. Các công nghệ container bao gồm dự án Linux Container – đó là nguồn cảm hứng ban đầu của Docker. Thiết kế container thân thiện giúp bạn dễ dàng tự động hoá và quản lý từ xa các nhóm container phức tạp, thường được triển khai dưới dạng microservices.

Microservices là một dịch vụ tính toán kiến trúc, nơi nhiều container được triển khai, mỗi cái đều có vai trò riêng biệt nhưng bổ sung. Vì vậy, bạn có thể khởi chạy một container như là database back-end, file server, hoặc web server.

Docker

Docker là image có hành vi được xác định bởi script. Container được khởi chạy như là một phần mềm giả lập tinh xảo như một máy chủ.

Nhưng image là gì? Đó là một tập tin có chứa một bản chụp của một hệ thống tập tin hệ điều hành đầy đủ. Tất cả mọi thứ cần thiết để khởi chạy một máy chủ ảo. Một image có thể bao gồm hệ điều hành phổ biến như Ubuntu Linux, hoặc siêu nhỏ và siêu nhanh Alpine Linux. Nhưng image cũng có thể bao gồm các lớp bổ sung với các ứng dụng phần mềm như máy chủ web và cơ sở dữ liệu. 

Như thể hiện trong hình tiếp theo, hình ảnh được khởi chạy dưới dạng container, một lớp dữ liệu được tự động thêm vào để ghi lại các hoạt động đang diễn ra của hệ thống.

Cloud computing (Điện toán đám mây)

Điện toán đám mây là cung cấp tài nguyên :bộ nhớ và lưu trữ từ xa qua mạng.

Vì các dịch vụ dựa trên đám mây có thể thanh toán theo phần nhỏ, bạn có thể nhanh chóng cấu hình và triển khai một loạt các dự án. Và vì tất cả các tài nguyên đều là ảo, việc tung ra chúng như là một phần của một thử nghiệm hoặc để giải quyết một số vấn đề ngắn hạn thường sẽ mang lại nhiều ý nghĩa. Khi công việc đã hoàn tất, tài nguyên có thể thu hồi lại được.

Đối với những dự án không biết trước kéo dài trong bao lâu và không biết mức độ mở rộng việc đầu tư vào phần cứng mạnh có thể chưa cần thiết.

Nhưng nếu bạn chỉ thuê đủ thiết bị của người khác để đáp ứng các mức cầu thay đổi nhanh và chỉ trả tiền cho những gì bạn thực sự sử dụng, thì sẽ hiệu quả hơn nhiều.

AWS

There’s no shortage of ways to manage Docker containers on AWS. In fact, between frameworks, orchestration interfaces, image repositories,
and hybrid solutions, the variety can get confusing.

This article won’t dive deeply into every option, but you should at least be aware of all your choices:

Amazon’s EC2 Container Service (ECS) leverages specially configured EC2 instances as hosts for integrated Docker containers. You don’t have to get your hands dirty on the EC2 instance itself, as you can provision and administrate your containers through the ECS framework. ECS now offers greater abstraction (and simplicity) through their Fargate mode option.

AWS CloudFormation allows you to configure any combination of AWS resources into a template that can be deployed one or many times. You can include specified dependencies and custom parameters in the template. Given its self-contained and scriptable design, CloudFormation is a natural environment for Docker deployments. In fact, Docker itself offers its Docker for AWS service (currently in beta), that will automatically generate a CloudFormation template to orchestrate a swarm of Docker containers to run on AWS infrastructure within your account.

AWS Elastic Beanstalk effectively sits on top of ECS. It allows you to deploy your application across all the AWS resources normally used by ECS, but with virtually all of the logistics neatly abstracted away. Effectively, all you need in order to launch a fully scalable, complex microservices environment is a declarative JSON-formatted script in a file called Dockerrun.aws.json. You can either upload your script to the GUI or, from an initialized local directory using the AWS Beanstalk CLI.

Amazon Elastic Container Service for Kubernetes (EKS) is currently still in preview. It’s a tool allowing you to manage containers using the open source Kubernetes orchestrator, but without having to install your own clusters. Like ECS, EKS will deploy all the necessary AWS infrastructure for your clusters without manual intervention.

Docker for AWS is, at the time of writing, still in beta. Using its browser interface, you can use the service to install and run a “swarm of Docker Engines” that are fully integrated with AWS infrastructure services like auto scaling, load balancing (ELB), and block storage.

Docker Datacenter (now marketed as part of Docker Enterprise Edition) is a joint AWS/Docker project that provides commercial customers with a more customizable interface for integrating Docker with AWS, Azure, and IBM infrastructures.

Docker Cloud, much like Docker Datacenter, offers a GUI, browser-based console for managing all aspects of your Docker deployments. This includes administration for your host nodes running in public clouds. The big difference is that, unlike Datacenter, the Docker Cloud administration service is hosted from its own site. There’s no server software to install on your own equipment.

Docker Hub is probably the obvious first place to look for and to share Docker images. Provided by Docker itself, Docker Hub holds a vast collection of images that come pre-loaded to support all kinds of application projects. You can find and research images on the hub.docker.com web site, and then pull them directly into your own Docker Engine environment.

EC2 Container Registry (ECR) is Amazon’s own image registry to go with their EC2 Container Service platform. Images can be pushed, pulled, and managed through the AWS GUI or CLI tool. Permissions policies can closely control image access only to the people you select.

I think you’re ready to start. If you haven’t yet, do head over to the
Amazon Web Services site to create an AWS account. In case you’re not
yet familiar with how this all works, new accounts get a generous full year
of experimentation with any service level that’s eligible for the Free Tier.
Assuming you’re still in your first year, nothing we’re going to do in this
course should cost you a penny.

Next, we’ll pop the lid off Docker and see how it works at its most basic level: your laptop command line. Technically, this has very little relevance to AWS workloads, but it’ll be a great way to better understand the workflow.

Khi cần hỗ trợ xin liên hệ với chúng tôi:
Công ty phần mềm Nhân Hòa
Trụ sở Hà Nội: Tầng 4 – Toà nhà 97 – 99 Láng Hạ, Đống Đa, Hà Nội
Chi nhánh HCM: 270 Cao Thắng (nối dài), Phường 12, Quận 10, TP HCM
Chi nhánh Vinh – Nghệ An: Tầng 2 Tòa nhà Sài Gòn Sky, ngõ 26 Nguyễn Thái Học, phường Đội Cung, TP. Vinh, Nghệ An
Hotline: 19006680

Trả lời