![](https://static.wixstatic.com/media/68165d_a5fc70c9ac3148e3958be212a7a67cde~mv2.png/v1/fill/w_225,h_225,al_c,q_85,enc_auto/68165d_a5fc70c9ac3148e3958be212a7a67cde~mv2.png)
I. Docker là gì ?
- Docker là một dự án mã nguồn mở: https://github.com/docker
- Là tên công ty sáng lập nên Docker (tên cũ là dotCloud). Trang chủ https://docker.com
- Docker tạo ra các container cho các ứng dụng phần mềm.
- Image là component để triển khai ứng dụng bao gồm mã nguồn, thư viện, framwork, file,... Trừu tượng hóa giải pháp và đóng gói vào một image kèm dependencies >> Tránh conflict môi trường triên khải
- Build, ship and deploy any application, anywhere
+ Build: Đóng gói các ứng dụng trong một container.
+ Ship: vận chuyển các container.
+ Deploy: triển khai, chạy container.
+ Anywhere: chạy trên laptop, pc, máy ảo, cloud instance, máy chủ,...
II. Một số thuật ngữ cơ bản
1. Image
- Khuôn mẫu, lớp chứa các file cần thiết để tạo nên một container.
- Chứa những tài nguyên có sẵn.
- Không tiếp cận được vào CPU, memory, storage,...
2. Container
- Tồn tại trên host với một địa chỉ IP
- Được deploy, chạy và xóa bỏ thông qua remote client
3. Docker engine
![](https://static.wixstatic.com/media/68165d_419f7ae9183f452e837b4ace8af389bd~mv2.png/v1/fill/w_717,h_503,al_c,q_90,enc_auto/68165d_419f7ae9183f452e837b4ace8af389bd~mv2.png)
- Tạo và chạy container
- Chạy lệnh trong chế độ deamon
- Linux trở thành máy chủ Docker
- Container được deploy, chạy và xóa bỏ thông qua remote client
4. Docker deamon
![](https://static.wixstatic.com/media/68165d_55f41782084942628253a9085b89a12a~mv2.png/v1/fill/w_833,h_409,al_c,q_85,enc_auto/68165d_55f41782084942628253a9085b89a12a~mv2.png)
Tiến trình chạy ngầm quản lý các container
5. Docker client
- Kiểm soát hầu hết các workflow của Docker
- Giao tiếp với các máy chủ Docker thông qua deamon
6. Docker hub (registry)
![](https://static.wixstatic.com/media/68165d_4cebbc708d194bb6bcb516cc472f5cf0~mv2.png/v1/fill/w_826,h_467,al_c,q_90,enc_auto/68165d_4cebbc708d194bb6bcb516cc472f5cf0~mv2.png)
- Chứa các component docker
- Cho phép lưu, sử dụng, tìm kiếm image.
- Đóng vai trò "ship" trong "Build, ship, deploy"
III. Điểm mạnh của docker
- Deploy nhanh hơn
![](https://static.wixstatic.com/media/68165d_a132f22542f241338d03313b17b4b8a6~mv2.png/v1/fill/w_909,h_635,al_c,q_90,enc_auto/68165d_a132f22542f241338d03313b17b4b8a6~mv2.png)
+ Hệ thống augment file system
+ Thêm các layer bên trên root kernel
+ Dễ dàng tổng hợp các layer thành một
- Độc lập: lỗi xảy ra với một container không ảnh hưởng đến container khác
- Cơ động:
+ Tránh conflict môi trường
+ Trao đổi giữa các máy
+ Nhất quán khi chạy trên các máy khác nhau
- Chụp ảnh hệ thống (Snapshot)
+ Lưu snapshot lại thành container hoặc image
+ Tag
+ Tạo container y hết từ snapshot
- Kiểm soát việc sử dụng tài nguyên (CPU, RAM, storage,...)
- Đơn giản hóa sự phụ thuộc lẫn nhau giữa các ứng dụng (dependency), xác định dependency ở Dockerfile
- Thuận tiện cho việc chia sẻ:
+ Docker hub (public/private registry)
+ Dockerfile
IV. Cơ chế hoạt động của docker
1. Kernel
Chạy trức tiếp trên phần cứng và nhận các thông tin khác nhau:
- Phản hồi các thông điệp từ phần cứng
- Khởi tạo và đặt lịch cho các chương trình
- Quản lý và hệ thống các tác vụ
- Truyền tin giữa các chương trình
- Phân chia tài nguyên, bộ nhớ, CPU, mạng,...
- Tạo container bằng cách chỉnh các thiết lập kernel
2. Docker
- Viết bằng ngôn ngữ Go
- Quản lý nhiều đặc tính của kernel
+ "cgroup": nhóm các tiến trình
+ "namespace": chia tách các tầng network
+ "copy-on-write": định nghĩa image
- Đơn giản hóa việc viết script cho các hệ thống phân tán
- Docker bao gồm 2 phần: client và server
- Server nhận lệnh qua socket (qua mạng hoặc qua file)
![](https://static.wixstatic.com/media/68165d_3eb5e96b54694f51823cee407d438c88~mv2.png/v1/fill/w_980,h_394,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/68165d_3eb5e96b54694f51823cee407d438c88~mv2.png)
- Client có thể được chạy bên trong docker
![](https://static.wixstatic.com/media/68165d_ed65d24e40eb4f12bf3c2bc72174e33f~mv2.png/v1/fill/w_980,h_395,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/68165d_ed65d24e40eb4f12bf3c2bc72174e33f~mv2.png)
V. Kiến trúc của Docker
![](https://static.wixstatic.com/media/68165d_169f1cba65504696858b10339763751b~mv2.png/v1/fill/w_980,h_346,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/68165d_169f1cba65504696858b10339763751b~mv2.png)
- Kiến trúc client-server
- Có 3 thành phần chính:
+ Docker Client
+ Docker host
+ Docker Hub
- Docker deamon nhận lệnh từ Docker client thông qua CLI hoặc REST API
- Docker client ở trên cùng host hoặc khác host với docker deamon
- Docker Hub: dịch vụ lưu trữ, chia sẻ image
Docker toolbox:
- Là một bộ cài đặt Docker cho môi trường Windows và Mac dành cho những thiết bị không đạt yêu cầu để cài bộ cài đặt mới
- Bao gồm các công cụ:
+ Docker Machine: quản lý host bằng các lệnh docker-machine
++ Công cụ giúp cài đặt Docker Engine trên các host ảo.
++ Quản lý các host bằng lệnh docker-machine
+ Docker Engine: chạy các lệnh docker
+ Docker Compose: thiết lập việc chạy nhiều container trong host
+ Kitematic: giao diện hiển thị cho docker
+ Shell thiết lập sẵn để phục vụ cho môi trường command-line trên docker
+ Oracle Virtualbox: máy ảo
Comments