top of page

Tìm hiều Docker cơ bản

Writer's picture: Tuan NguyenTuan Nguyen

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



- 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


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)


- 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


+ 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)

- Client có thể được chạy bên trong docker


V. Kiến trúc của Docker

- 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

4 views0 comments

Comments


 

© 2018 by Tuấn Nguyễn

 Liên hệ tôi
  • Facebook - Black Circle
  • Google+ - Black Circle
bottom of page