post-image

Docker là gì ?

Tổng quan

Docker là một open platform cung cấp cho người sử dụng những công cụ và service để người sử dụng có thể đóng gói và chạy chương trình của mình trên các môi trường khác nhau một cách nhanh nhất.

Docker là gì ?

Docker là một open platform cung cấp cho người sử dụng những công cụ và service để người sử dụng có thể đóng gói và chạy chương trình của mình trên các môi trường khác nhau một cách nhanh nhất.

Còn theo ý hiểu đơn thuần của mình khi sử dụng, thì docker đóng gói và cài đặt môi trường cho chương trình rất là nhanh. Giả sử như trước đây mình cần setup một môi trường cho hệ thống yêu cầu phải dùng cùng lúc 4 loại database mongo, postgresql, redis, mysql, thay vì phải cài và chạy cho từng con, mình chỉ cần chạy một lệnh docker-compose up vậy là xong.

Ưu điểm của Docker

Giả lập môi trường trên server ở dưới máy local Bình thường, khi một dự án run dưới local chạy demo thì ngon vãi nhưng khi deploy lên server thì sập vỡ mặt, mà nguyên nhân cơ bản liên quan đến vụ nè là do môi trường của server khác với môi trường của local, ví dụ local mình đang xài Ubuntu mà server lại chơi CenOS, không thì cũng kiểu, chơi ruby 2.3 còn server thì lại phang ruby 2.2.3.

Vậy với docker ta có thể giả lập hoàn toàn môi trường server dưới local một cách hoàn hảo.

Trải nghiệm và dùng thử một hệ điều hành mới Đơn giản thôi, không cần phải dùng virtua studio làm gì cả docker là đủ rùi

Lưu trữ và chia sẻ setup môi trường dự án cho nhóm Cái nè hay nè, trước đây khi handover dự án, phần setup môi trường cho dự án rất lằng nhằng và phải lưu lại nhiều doc hướng dẫn là lưu ý khi cài đặt môi trường, nhưng giờ đây, mình chỉ cần share container của docker là đã giảm được quá nửa document setup môi trường rùi, không chỉ vậy, nó còn thuận tiện và đơn giản cho các thành viên trong team trong việc tìm hiểu về môi trường hệ thống khi join vào dự án

Test song song Có những automation test khá là nặng và tốn thời gian (như việc tương tác mạng, upload, download chẳng hạn), nếu chạy test trên 1 máy thì sẽ rất tốn thời gian.

Ta tạo ra nhiều Container giống nhau (việc tạo này cực kỳ đơn giản vì nó dùng chung 1 file gốc – Image), sau đó chi task ra cho chúng thực hiện cùng 1 lúc => tiết kiệm được thời gian và tận dụng được tài nguyên của server (hoặc của máy mình).

Test app trên một hệ điều hành khác Khi app của bạn đã chạy ngon trên Ubuntu, bạn muốn xem thử tình trạng của nó trên CentOS thì làm thế nào? không lẽ lại phải setup máy ảo -_- . thôi khỏi, chạy docker cho nhanh =))

Các thành phần cơ bản

Docker có 4 thành phần cơ bản như sau:

  • Image
  • Container
  • Docker Engine
  • Docker Hub

Image Là file ảnh, file nền của một hệ điều hành, một nền tảng, một ngôn ngữ (vd: ubuntu image, ruby image, rails image, mysql image…)

Từ các image này, bạn sẽ dùng nó để tạo ra các container.

Các image là dạng file-chỉ-đọc (read only file).

Tự bạn cũng có thể tạo image cho riêng mình.

Một image có thể được tạo từ nhiều image khác (vd: bạn tạo 1 image chạy ubuntu, có cài sẵn ruby 2.3 và rails 5, image này của bạn được tạo nên bởi 3 image khác).

Container Là một máy ảo, được cấu thành từ 1 image và được đắp thêm 1 lớp “trang trí” writable-file-layer. Các thay đổi trong máy ảo này (cài thêm phần mềm, tạo thêm file…) sẽ được lưu ở lớp trang trí này.

Các container này sẽ dùng chung tài nguyên của hệ thống (RAM, Disk, Network…), chính nhờ vậy, những container của bạn sẽ rất nhẹ, việc khởi động, kết nối, tương tác sẽ rất nhanh gọn.

Nếu ánh xạ sang hướng đối tượng, thì image chính là class, còn container chính là instance-1 thể hiện của class đó. Từ 1 class ta có thể tạo ra nhiều instance, tương tự, từ 1 image ta cũng có thể tạo ra được nhiều container hoàn toàn giống nhau.

Docker Engine quản lý việc bạn tạo image, chạy container, dùng image có sẵn hay tải image chưa có về, kết nối vào container, thêm, sửa, xóa image và container, ….., vô vàn vô vàn

Docker Hub Là 1 trang chia sẻ các image, nó như kiểu github hay bitbucket vậy.

Nguồn: https://viblo.asia/p/docker-la-gi-va-lam-gi-gGJ592RGKX2

Đọc thêm: OAuth2 là gì ?

Leave a Reply

Your email address will not be published.