Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa.
Docker cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux. Docker sử dụng những tài nguyên cô lập của Linux như cgroups, kernel, quản lý tệp để cho phép các container chạy độc lập bên trong một thực thể Linux.
Các thay đổi được lưu trữ trong các Docker image, các lớp tệp hệ thống được tạo ra và lưu lại dựa theo từng lớp (layer). Điều này giúp cho ảnh Docker giảm dung lượng đáng kể so với máy ảo (VM).
Các ứng dụng muốn chạy bằng Docker phải là ứng dụng chạy được trên Linux. Gần đây, Docker có hỗ trợ thêm việc chạy ứng dụng Windows trong các Windows container.
Docker có thể được tích hợp vào các công cụ, bao gồm cả Amazon Web Services, Ansible, Chef, Puppet, SaltStack,…
Thành phần
- Docker Engine: dùng để tạo ra Docker image và chạy Docker container.
- Docker Hub: dịch vụ lưu trữ giúp chứa các Docker image.
- Docker Machine: tạo ra các Docker engine trên máy chủ.
- Docker Compose: chạy ứng dụng bằng cách định nghĩa cấu hình các Docker container thông qua tệp cấu hình
- Docker image: một dạng tập hợp các tệp của ứng dụng, được tạo ra bởi Docker engine. Nội dung của các Docker image sẽ không bị thay đổi khi di chuyển. Docker image được dùng để chạy các Docker container.
- Docker container: một dạng runtime của các Docker image, dùng để làm môi trường chạy ứng dụng.
- Khi bạn cần triển khai kiến trúc Microservices.
- Khi ứng dụng bạn cần scale một cách linh hoạt.
- Khi bạn cần build 1 lần và chạy ở nhiều máy khác nhau mà không cần quan tâm đến config.
- Khi bạn cần một cách tiếp cận mới về building, shipping, running ứng dụng một cách nhanh chóng dễ dàng.