Giới thiệu Amazon EC2 Container Service

Trong những năm gần đây công nghệ Docker khá là hot, ngay bản thân công ty tôi đang làm đã ứng dụng nó vào các dự án thực tế và đã cho thấy tính hiệu năng và sự linh hoạt của nó, chính vì lý do đó có khá là nhiều nhà cung cấp dịch vụ Docker như Google Cloud Container Registry, Docker Hub nhưng trong bài chia sẽ này tôi sẽ giới thiệu các bạn một nhà cung cấp cloud đáng gờm đó là Amazon ECR

Trước khi đi vào cụ thể chúng ta hãy dẫn ra lý do cụ thể tại sao các ông lớn lại cung cấp dịch vụ này, trước tiên bạn phải hiểu Docker nó là gì nếu chưa hiểu thì kiếm video và bài viết của chúng tôi trên gsviec, kế đến thì theo sự hiểu biết hiện tại của tôi thì khi làm việc với Docker như cầu bình thường thì chúng ta không cần phải dùng các image private nhưng khi vào các dự án thực tế cho các công ty thì bắt buộc chúng ta phải dùng image private, tất nhiên chúng ta có thể tự động tạo host cho chuyện đó(dùng Kubernetes) nhưng như thế rất vất quả với lại việc cung cấp thêm các giải pháp bảo mật, scale(mở rộng), tính sẵn sàng cao

Với dịch vụ Amazon EC2 Container Service(Amazon ECS)) cung cấp mọi thứ trở nên nhẹ nhàng hơn bao giờ hết, vậy Amazon ESC là gì

Định nghĩa Amazon ECS

Theo như trang chủ nó thì Amazon EC2 Container Service là một dịch vụ quản lý container nhanh và khả năng mở rộng, giúp bạn dễ dàng chạy, dừng lại và quản lý các thùng chứa Docker trên một đám mây Amazon Elastic Compute Cloud (Amazon EC2). Amazon ECS cho phép bạn khởi chạy và dừng ứng dụng dựa trên vùng chứa với các cuộc gọi API đơn giản, và đặc biệt hơn nữa mọi thao tác mà bạn tuơng tác trên dịch EC2 thì có thể thao tác tương tự.

Chi phí sử dụng cho dịch vụ này là như chi phí dùng dịch vụ Amazon EC2. Nói tới Amazon ECS mà không nói đến Amazon EC2 Container Registry(Amazon ECR) thì thật là thiếu sót, vì hai thằng này nó tuơng tác cùng nhau, vậy nó là gì?

Định nghĩa Amazon ECR

Nói ngắn gọn nó là nơi để chứa các image của docker mà bạn đã build duới máy local của bạn, sau đó bạn hay người khác muốn dùng thì cứ việc pull về như cách dùng thông thường của Docker, chi phí sử dụng nó là dùng bao nhiêu trả bấy nhiêu và có miễn phí cho 500MB/1 tháng cho năm đầu tiên. Bạn có thể xem bản giá cả bên dưới khá là rẻ.

Cách sử dụng cơ bản

Trên đây chúng tôi đã giới thiệu bạn cơ bản nó là gì, rồi tiếp theo chúng tôi sẽ hướng dẫn các bạn cách dùng nó, truớc tiên bạn cần phải có tài khoản AWS nếu chưa có và không biết cách đăng ký thì có thể xem video của chúng tôi Tạo tài khoản trên Amazon Web Service, kế đến máy của bạn phải cài đặt Docker nếu chưa có thì có thể tham khảo bài viết này Hướng dẫn cài đặt Docker căn bản và cuối cùng là cài đặt aws cli các bạn có thể xem cách cài đặt tại đây, giao diện sau khi đăng nhập vào trang quản lý Amazon ECS như sau:

để tạo một image docker thì bạn click vào nút “Create repository” như hình bên trên hiện tại chúng tôi đang có một image docker, sau khi bạn click vào nó sẽ có dạng như sau

trong đó phần name chúng tôi đặt tên nó là nginx-gsviec vì mục đích của image này là web server cho dự án của chúng tôi và chúng tôi dùng nginx do đó đặt tên nó như vậy cho dễ nhớ thôi, không có gì cao siêu cả :), sau đó bạn bấm next thì sẽ có hình hưỡng dẫn cách tạo như sau:

OK hãy để chúng tôi giải thích ý nghĩa các dòng lệnh bên trên, truớc tiên nó yêu câu bạn login vào docker thông qua lệnh docker login thì mặc dịnh lệnh này sẽ sử dụng dịch vụ của Docker chứ không phải dịch vụ của Amazon do đó chúng ta sẽ chạy lệnh *aws ecr get-login –no-include-email –region us-east-1 * để lấy token đăng nhập cho aws:

để đăng nhập Docker cho aws thi ban chỉ việc chạy lệnh mà nó đã in ra bên trên, trong trường hợp của tôi là

[code lang=”text”] ###

docker login -u AWS -p eyJwYXlsb2FkIjoiSxxxxxxxxxxxxxx

[/code]

thì nó sẽ báo bạn kết nối thành công, chú ý rằng nếu nó báo thất bai có thể bạn chưa cấp quyền IAM của key mà AWS CLI sử dụng để truy cập vào bạn cần phải thêm nó vào, bạn có thể vào mục IAM để thêm tính năng đó, trong ví dụ này chúng tôi cung cấp key nó là toàn quyền truy cập Amazon ECS và nó có dạng như sau:

kế đến nó nói bạn tạo một image dưới máy local của bạn thông qua lệnh docker build -t nginx-gsviec ., nếu bạn có rồi thì khỏi cần tạo như trong máy local của tôi đã có sẵn một image nginx rồi thì không cần phải làm bước này, nếu bạn muốn có thể tải Dockerfile ở đây về docker-gsviec

[code lang=”text”] git clone https://github.com/gsviec/docker-canban.git
cd scripts/nginx
docker build -t nginx-gsviec .

[/code]

sau đó bạn thêm tag và push image bạn vừa tạo lên Amazon ECR thông qua lệnh sau:

[code lang=”text”] ###
docker tag nginx-gsviec:latest 001955506259.dkr.ecr.us-east-1.amazonaws.com/nginx-gsviec:latest
docker push 001955506259.dkr.ecr.us-east-1.amazonaws.com/nginx-gsviec:latest

[/code]

kết quả sẽ tương tự như hình này nếu mọi thứ mà bạn thao tác thành công

sau đó bạn reload lại trang quản lý của Amazon ECR thì sẽ thấy cái image của bạn trên đó, trong trường hợp của chúng tôi thì như hình sau:

bạn cũng có thể kiểm tra danh sách các image hiện tại của bạn thông qua dòng lệnh sau:

[shell] thientd at gsviec in ~
$ aws ecr describe-repositories
{
"repositories": [
{
"createdAt": 1509073501.0,
"repositoryName": "nginx-gsviec",
"repositoryArn": "arn:aws:ecr:us-east-1:001955506259:repository/nginx-gsviec",
"registryId": "001955506259",
"repositoryUri": "001955506259.dkr.ecr.us-east-1.amazonaws.com/nginx-gsviec"
},
{
"createdAt": 1508815198.0,
"repositoryName": "d8",
"repositoryArn": "arn:aws:ecr:us-east-1:001955506259:repository/d8",
"registryId": "001955506259",
"repositoryUri": "001955506259.dkr.ecr.us-east-1.amazonaws.com/d8"
}
] }

[/shell]

để dùng nó thì bạn chỉ việc pull nó về thôi, ví dụ

[code lang=”text”] ###
docker pull 001955506259.dkr.ecr.us-east-1.amazonaws.com/nginx-gsviec

[/code]

chú ý image này chỉ có chúng tôi pull về được thôi còn bạn sẽ bị báo lỗi, vì nó là image private của chúng tôi. Xin chúc mừng bạn đã đăng ký thành công một EC2 Container Registry, trong phần sau chúng tôi sẽ hướng dẫn các bạn cách sử dụng nó như tạo một task, một cluster, một service nhưng hình bên dưới đây, nhưng nếu bạn không muốn chờ đợi thì có thể xem bài viết blog của trang chủ Amazon vế https://aws.amazon.com/blogs/compute/nginx-reverse-proxy-sidecar-container-on-amazon-ecs/

Bạn có thể truy cập các đường dẫn bên dưới để check demo của chúng tôi

Đây là kết quả demo của chúng tôi:

Kết luận

Trên đây là quá trình tìm hiểu của tôi về dịch vụ Docker mà Amazon cung cấp, nếu có thiếu xót nào mong các bạn thông cảm. Theo cá nhân của tôi khi ứng dụng bạn triển khai theo hình thức micro service thì nên dùng nó còn không thì bạn không nên dùng tính năng này của Amazon.

Cập nhật, kể từ bài viết này đến nay cũng đã gần 2 năm chúng tôi dùng khá là nhiều công cụ để quản lý container , thì  chúng tôi khuyên bạn nên chuyển sang dùng kubernetes đó là lý do AWS mới cung cấp dịch vụ EKS https://aws.amazon.com/vi/eks/. Nếu các bạn nào cần tư vấn giải pháp công nghệ trên nên tảng AWS hãy gửi thông tin qua email [email protected], chúng tôi sẽ có phản hồi sớm nhất.

Leave a Reply

Your email address will not be published.