Docker (phần mềm)

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm
Docker
Docker (container engine) logo.svg
Thiết kế bởi Solomon Hykes
Phát triển bởi Docker, Inc.
Phát hành lần đầu 13 tháng 3, 2013; 5 năm trước
Bản mẫu:Infobox software/simple
Repository github.com/docker/docker-ce
Được viết bằng Go[1]
Hệ điều hành Linux[a]
Nền tảng x86-64, ARM (thử nghiệm) với Linux kernel hiện đại
Thể loại Ảo hóa cấp độ Hệ điều hành
Giấy phép Apache License 2.0
Trang mạng www.docker.com

Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng LinuxWindows 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.[5] Docker sử dụng những tài nguyên cô lập của Linux như cgroups, kernel, quản lý tệp[6] để cho phép các container chạy độc lập bên trong một thực thể Linux.[7]

Tổng quan[sửa | sửa mã nguồn]

Docker có thể sử dụng các giao diện khác nhau để truy cập vào tính năng ảo hóa trên kernel Linux.[8]

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.

Tích hợp[sửa | sửa mã nguồn]

Docker có thể được tích hợp vào các công cụ, bao gồm cả Amazon Web Services,[9] Ansible,[10] CFEngine,[11] Chef,[12] Google Cloud Platform,[13] IBM Dấu,[14] Jelastic,[15] Jenkins,[16] Microsoft Azure,[17] OpenStack Nova,[18] OpenSVC,[19] HPE Helion Stackato, Puppet,[20] Salt,[21] Vagrant,[22] và VMware vSphere Containers.[23][24]

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

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

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

Lịch sử[sửa | sửa mã nguồn]

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ụ[27], ban đầu có thêm sự đóng góp của các kỹ sư dotCloud là Andrea Luzzardi và Francois-Xavier Bourlet.[cần dẫn nguồn] Jeff Lindsay cũng đã tham gia như là một nhà cộng tác độc lập.[cần dẫn nguồn] [cần dẫn nguồn]

Docker được phát hành dạng mã nguồn mở trong tháng 3 năm 2013.[28] 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.[29][30]  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 rên GitHub), có hơn 6,800 fork, và gần 1.100 lập trình viên tham gia đóng góp.[31]

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.[32]

Thành phần[sửa | sửa mã nguồ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[sửa | sửa mã nguồn]

Cài đặt[sửa | sửa mã nguồn]

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[sửa | sửa mã nguồn]

Sau khi cài đặt Docker, chương trình hello-world có thể chạy theo cú pháp sau:

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[sửa | sửa mã nguồn]

  • DevOps

Ghi chú[sửa | sửa mã nguồn]

  1. ^ Docker on non-Linux platforms uses a Linux virtual machine to run the containers.[2][3]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ “Docker source code”. docs.docker.com. Docker, Inc. 12 tháng 10 năm 2015. Truy cập ngày 24 tháng 10 năm 2015. 
  2. ^ https://docs.docker.com/installation/windows/#virtual
  3. ^ https://docs.docker.com/installation/mac/#VM
  4. ^ “Docker Changelog”. docs.docker.com. Docker, Inc. 11 tháng 10 năm 2016. Truy cập ngày 13 tháng 10 năm 2016. 
  5. ^ O'Gara, Maureen (26 tháng 7 năm 2013). “Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud”. SYS-CON Media. Truy cập ngày 9 tháng 8 năm 2013. 
  6. ^ “docker/docker”. GitHub. Truy cập ngày 29 tháng 12 năm 2015. 
  7. ^ “Docker Documentation: Kernel Requirements”. docker.readthedocs.org. 4 tháng 1 năm 2014. Bản gốc lưu trữ ngày 21 tháng 8 năm 2014. Truy cập ngày 20 tháng 8 năm 2014. 
  8. ^ “Docker 0.9: Introducing execution drivers and libcontainer”. docker.com. 10 tháng 3 năm 2014. Truy cập ngày 20 tháng 1 năm 2015. 
  9. ^ “Amazon EC2 - Docker Documentation”. docs.docker.com. Truy cập ngày 18 tháng 10 năm 2014. 
  10. ^ /. “ansible/library/cloud/docker”. GitHub. Truy cập ngày 20 tháng 1 năm 2014. 
  11. ^ “CFEngine”. CFEngine. Truy cập ngày 6 tháng 6 năm 2014. 
  12. ^ “thoward/docker-cookbook”. GitHub. Truy cập ngày 20 tháng 1 năm 2014. 
  13. ^ “Containers on Google Cloud Platform”. Google Inc. 
  14. ^ “Bluemix Launches IBM Containers Beta Based on Docker”. IBM. 4 tháng 12 năm 2014. Truy cập ngày 20 tháng 4 năm 2015. 
  15. ^ “Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery”. PRWeb. Truy cập ngày 3 tháng 12 năm 2014. 
  16. ^ “georgebashi/jenkins-docker-plugin”. GitHub. Truy cập ngày 20 tháng 1 năm 2014. 
  17. ^ “The Docker Virtual Machine Extension for Linux on Azure”. Microsoft. 29 tháng 6 năm 2015. Truy cập ngày 11 tháng 8 năm 2015. 
  18. ^ Stefano Maffulli  June 7th, 2013 (7 tháng 6 năm 2013). “OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog”. Openstack.org. Truy cập ngày 20 tháng 1 năm 2014. 
  19. ^ “OpenSVC Docker”. OpenSVC. Truy cập ngày 29 tháng 5 năm 2014. 
  20. ^ Gareth Rushgrove. “garethr/docker”. Puppet Forge. Truy cập ngày 20 tháng 1 năm 2014. 
  21. ^ “saltstack/dockerio”. Truy cập ngày 20 tháng 1 năm 2014. 
  22. ^ “philspitler/vagrant-docker”. GitHub. Truy cập ngày 20 tháng 1 năm 2014. 
  23. ^ http://searchservervirtualization.techtarget.com/definition/VMware-vSphere-Integrated-Containers-VIC VMware vSphere Integrated Containers (VIC)
  24. ^ http://thenewstack.io/vmwares-photon-platform-and-how-it-treats-containers/ VMware’s Photon Platform and How it Treats Containers
  25. ^ Whelan, Phil (3 tháng 9 năm 2014). “Cloud Foundry: Diego Explained By Onsi Fakhouri”. ActiveState. Truy cập ngày 20 tháng 4 năm 2015. Functionality is being added to enable end-users to push Docker images directly into a Cloud Foundry cluster running Diego. 
  26. ^ a ă Chú thích trống (trợ giúp) 
  27. ^ “One home for all your apps”. dotcloud.com. Truy cập ngày 8 tháng 5 năm 2014. 
  28. ^ Avram, Abel (27 tháng 3 năm 2013). “Docker: Automated and Consistent Software Deployments”. InfoQ. Truy cập ngày 9 tháng 8 năm 2013. 
  29. ^ Steven J. Vaughan-Nichols (11 tháng 6 năm 2014). “Docker libcontainer unifies Linux container powers”. ZDNet. Truy cập ngày 30 tháng 7 năm 2014. 
  30. ^ Swan, Chris (13 tháng 3 năm 2014). “Docker drops LXC as default execution environment”. InfoQ. Truy cập ngày 20 tháng 1 năm 2015. 
  31. ^ “dotcloud/docker”. github.com. Truy cập ngày 13 tháng 4 năm 2015. 
  32. ^ “Docker - Updated project statistics”. Gist. Truy cập ngày 22 tháng 8 năm 2016. 

Liên kết ngoài[sửa | sửa mã nguồn]