Docker Compose là gì? Tổng hợp kiến thức về Docker compose
Để phục vụ việc phát triển ứng dụng được dễ dàng và thuận tiện hơn, đã có rất nhiều công nghệ hỗ trợ ra đời. Docker nói chung và Docker Compose nói riêng là nhưng công nghệ nằm trong số đó. Hôm nay, Bizfly Cloud sẽ tìm hiểu cụ thể và chi tiết tất cả những điều cần biết xoay quanh Docker Compose.
Về Docker
Trước tiên, để bắt đầu ta sẽ tìm hiểu docker là gì.
Docker là một nền tảng dành cho developer và system administrator, cung cấp cho họ những thành phần để build, run và share những chương trình thông qua những container. Việc sử dụng container để triển khai chương trình được gọi là containerization.
Một chương trình bình thường nếu chạy ở các server sẽ có ba lớp từ trên xuống là: chương trình (Application), Hệ điều hành (Operating System) và Máy chủ vật lí (Physical Server).
Chương trình chạy trên một server
Vấn đề phát sinh khi ta chạy nhiều chương trình trên server, việc ảnh hưởng từ chương trình này đến chương trình kia sẽ xảy ra (ví dụ như dùng chung tài nguyên, thư viện,…) dẫn đến hậu quả là hiệu năng của toàn bộ server không cao. Vì vậy, một số phương pháp đã được đưa ra để giải quyết vấn đề.
Lợi ích của máy ảo
Thay vì dùng chung một OS, ảo hóa sẽ chia tài nguyên vật lí hệ thống ra thành các phần rồi chạy hệ điều hành trên các phần chia ra đó. Các chương trình sẽ được chạy trên các hệ điều hành ảo được chia tài nguyên đó (được gọi là Guest OS). Lúc này OS chạy hệ thống ảo hóa (gọi là Host OS) chỉ chạy chương trình quản lí các máy ảo (hay hypervisor).
Một số công cụ hỗ trợ ảo hóa thường gặp là VirtualBox, Vmware hay Hyper-V.
Cách thứ hai là sử dụng công nghệ containerization.
Docker Container và Máy ảo
Với cách này, các chương trình sẽ chạy trên các container và dùng chung một OS. Container sẽ chứa tất cả các thành phần để tạo ra một môi trường cho phép ứng dụng được chạy trên nó. Vì lí do đó, container có một số ưu điểm như: đa dạng, nhẹ, portable, dễ dàng nâng cấp,thay thế, và có khả năng mở rộng.
Docker
Docker được ra mắt trên thị trường vào năm 2013 và đến hiện tại công nghệ nhận được sự hợp tác và hỗ trợ từ rất nhiều tập đoàn như Red Hat, Microsoft, IBM,…
Chương trình dùng để host các container được gọi là Docker Engine.
Một cách để chạy một Docker Container là sử dụng file gọi là Dockerfile. File này sẽ bao gồm các bước để build ra một Container. Việc build này phải thực hiện trên một máy tính có cài đặt Docker Engine.
Ngoài ra, còn một số gói thành phần được build sẵn được gọi là Docker Image. Một Image bao gồm hệ điều hành và các môi trường cho chương trình đã được đóng gói sẵn. Chúng ta có thể tải các Image từ Docker hub hoặc các image chia sẻ trên mạng. Ta có thể tạo mới một Container bằng cách chạy một Image.
>> Tìm hiểu thêm: Quản lý tự động Docker Image chỉ vài CLICK với Bizfly Container Registry
Docker Compose là gì?
Docker Compose là một công cụ dùng để định nghĩa và chạy các chương trình Docker sử dụng nhiều container (multi-container). Với Docker Compose, chúng ta sử dụng một file YAML để thiết lập các service cần thiết cho chương trình. Cuối cùng, với một câu lệnh, chúng ta sẽ create và start tất cả service từ các thiết lập đó.
Sử dụng Compose thường có ba bước sau:
1. Khai báo các môi trường của chương trình trong Dockerfile.
2. Khai báo các service cần thiết cho chương trình trong file docker-compose.yml để các service có thể chạy cùng với nhau trong một môi trường.
3. Chạy câu lệnh docker-compose up để start Compose và chạy chương trình.
Compose có những câu lệnh cho phép quản lí lifecycle của chương trình:
Start, Stop và Build lại service.
Xem status của các service đang chạy.
Xem log output của service đang chạy.
Chạy câu lệnh một lần (one-off command) trong một service.
Những lợi ích khi sử dụng Compose
Tạo ra nhiều môi trường độc lập (isolated environments) trong một host: Compose cô lập môi trường của các project để đảm bảo chúng không bị xung đột lẫn nhau, cũng như dễ dàng tạo những bản sao của một môi trường nào đó.
Chỉ tạo lại các container đã thay đổi: Compose sẽ nhận biết được các service chưa thay đổi và sử dụng lại các container tương ứng với service đó.
Điều chỉnh các biến sử dụng cho các môi trường: Compose sử dụng các biến trong Compose file cho các môi trường. Vì vậy với môi trường hay người dùng khác nhau, có thể điều chỉnh các biến khi sử dụng Compose để thiết lập các service.
Một số trường hợp thường gặp khi sử dụng Compose
Compose có thể được sử dụng cho nhiều trường hợp. Dưới đây sẽ là hai trường hợp sử dụng Compose trong việc phát triển chương trình.
Môi trường phát triển
Khi phát triển một chương trình, việc chạy một chương trình trong một môi trường cô lập và tương tác là rất cần thiết. Compose cho phép thiết lập và chạy tất cả các service cần thiết cho chương trình. Chỉ với một câu lệnh docker-compose up, các service đó sẽ được chạy với các container tương ứng.
Môi trường cho automated test
Với automated test, việc tạo ra một môi trường cho việc sử dụng các gói test bằng compose trở nên rất đơn giản. Tạo một môi trường với Compose, chạy các gói test, sau đó hủy môi trường đó chỉ với ba dòng lệnh:
$ docker-compose up
$ ./run_tests (Chạy gói automated test)
Ngoài các vấn đề cơ bản được trình bày trong bài viết, vẫn còn có rất nhiều vấn đề thú vị khác để tìm hiểu xoay quanh Docker và các công nghệ hỗ trợ xây dựng, phát triển ứng dụng. Hãy cùng theo dõi thêm các bài viết hay về chủ đề này trên Bizfly Cloud.
Theo Bizfly Cloud chia sẻ
>>Có thể bạn quan tâm: Sử dụng Shodan để tìm kiếm và Hack các Server chạy Docker (hiểu để phòng tránh và bảo vệ hệ thống)
Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.
Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.
Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.
DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud