Docker (phần mềm)

**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.

## Tổng quan

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 Docker Image 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.

### Tích hợp
Docker có thể được tích hợp vào các công cụ, bao gồm cả Amazon Web Services, Ansible, CFEngine, Chef, Google Cloud Platform, IBM Dấu, Jelastic, Jenkins, Microsoft Azure, OpenStack Nova, OpenSVC, HPE Helion Stackato, Puppet, Salt, Vagrant, và VMware vSphere Containers.

Dự án Cloud Foundry Diego tích hợp Docker vào Cloud Foundry PaaS.

Red Hat cũng tích hợp Docker vào OpenShift.

Apprenda tích hợp Docker trong phiên bản 6.0 sản phẩm của mình.

## Lịch sử
Solomon Hykes bắt đầu tạo ra Docker khi làm việc ở Pháp, trong một dự án nội bộ của dotCloud, một công ty nền tảng-như-dịch vụ, ban đầu có thêm sự đóng góp của các kỹ sư dotCloud là Andrea Luzzardi và Francois-Xavier Bourlet. Jeff Lindsay cũng đã tham gia như là một nhà cộng tác độc lập. 

Docker được phát hành dạng mã nguồn mở trong tháng 3 năm 2013. Vào ngày 13 năm 2014, với phiên bản 0.9, Docker bỏ đi LXC và thay thế nó với thư viện của mình là libcontainer được viết bằng ngôn ngữ Go.  Tới tháng 10 năm 2015, dự án Docker đã có hơn 25,600 sao trên GitHub (trở thành top 20 dự án có số sao cao nhất trên GitHub), có hơn 6,800 fork, và gần 1.100 lập trình viên tham gia đóng góp.

Tháng năm 2016, phân tích cho thấy các tổ chức sau có đóng góp chính cho việc phát triển Docker: nhóm Docker, Cisco, Google, Huawei, IBM, Microsoft, và Red Hat.

## 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.

## Chương trình

### Cài đặt
Docker có thể chạy được trên hầu hết các máy chủ Linux. Để chạy Docker trên máy chủ Windows hoặc Mac, Docker thường được chạy thông qua máy ảo VirtualBox.

Gần đây, Docker có thể chạy trên các máy chủ có cài Windows Server 2016.

### Chương trình hello-world
Sau khi cài đặt Docker, chương trình hello-world có thể chạy theo cú pháp sau:
```shell
docker run hello-world
```
Docker sẽ tự động tải ảnh Docker có tên hello-world trên Docker Hub về máy chủ và chạy câu lệnh mặc định.

## Xem thêm
* DevOps

## Ghi chú

## Tham khảo

## Liên kết ngoài
* 
* docker trên GitHub
* Đa-hợp đồng thuê nhà sử dụng Docker
* 
* libcontainer git kho trên GitHub
* Dữ liệu, và những đám mây trong tương lai, bởi Rami Rosen
__CHỈ_MỤC__