Tham dự Tech Lounge

Tham dự Tech Lounge


Docker là gì, tại sao phải dùng Docker?

minhdat288
4/5/2019 15:42Phản hồi: 3
Docker là gì, tại sao phải dùng Docker?
Công nghệ phát triển, hàng loạt các ứng dụng được tạo ra, nhiều ngôn ngữ lập trình mới hình thành nhằm đáp ứng nhu cầu cụ thể nào đó. Những ngôn ngữ lập trình khác nhau lại yêu cầu các phần mềm hỗ trợ, gói thư viện và môi trường khác nhau. Ví dụ bạn là lập trình Android, bạn muốn làm việc với iOS bạn phải cài thêm OS hoặc để deploy được các ứng dụng Python, Java, Scala…. bạn phải tiến hành cài đặt hàng tá môi trường. Đó là chưa kể xung đột phần mềm, port… Cài thôi đã mệt, nhựng sẽ thật kinh khủng nếu xảy ra xung đột phần mềm và làm ảnh hưởng đến hoạt động của các ứng dụng đang hoạt động trên máy của bạn. Chính vì thế Docker ra đời. Trong bài nay, mình sẽ giới thiệu các nội dung chính về Docker. Docker là gì, Docker giúp ích được gì cho bạn và cách thức hoặt động như thế nào.

I. Quá trình hình thành Docker


1. Containerlization:


Một mô khá quen thuộc với chúng ta và nó cũng có từ rất lâu rồi : Máy chủ vật lý + hệ điều hành(OS) + Application
docker-la-gi-tai-sao-phai-dung-docker-01.png
Với mô hình này, mỗi máy chỉ cài được 1 OS cho dù ổ cứng của bạn có khủng thế nào đi nữa. Điều này gây lãng phí tài nguyên.


Chính vì thế công nghệ ảo hóa Vitualization ra đời. Với công nghệ này, mỗi máy chủ vật lý chúng ta có thể tạo được nhiều OS khác nhau thông qua các VM ware hoặc Virtual Box.
docker-la-gi-tai-sao-phai-dung-docker-02.png
Mô hình này đã khắc phục được nhược điểm của mô hình đầu tiên nhưng chính bản thân nó lại có 2 nhược điểm lớn:

Tài nguyên: Khi bạn tạo 1 máy ảo, bạn phải cấp cho nó 1 dung lượng ổ cứng nhất định, ví dụ là 2GB RAM, 50GB ổ cứng và khi bạn chỉ cần bật nó lên thậm chí không làm gì thì nó vẫn ngốn 2GB RAM và 50GB ổ cứng của máy chủ vật lý.

Thời gian: Thời gian để khởi động hay tắt 1 máy ảo như thế là khá lâu và có thể lên đến vài phút.

Chính vì thế người ta lại sinh ra công nghệ Containerlication
docker-la-gi-tai-sao-phai-dung-docker-03.png
Với công nghệ này chúng ta cũng tạo ra được nhiều máy con giống như công nghệ ảo hóa nhưng vấn đề là các máy con này dùng chung phần nhân của máy mẹ (OS kernel) và chia sẻ tài nguyên của máy mẹ. Chính vì thế tránh được việc lãng phí tài nguyên. Điểm nổi bật của công nghệ này đó là Container.

2. Vậy Container là gì?


Container hay Docker Container là một. Hoạt động giống như một thư mục (directory), chứa tất cả những thứ cần thiết để một ứng dụng có thể chạy được. Mỗi một Docker Container được tạo ra từ một Docker Image. Các thao tác với một container: chạy, bật, dừng, di chuyển, và xóa. Không bị các yếu tố liên quan đến môi trường hệ thống làm ảnh hưởng tới, cũng như không làm ảnh hưởng tới các phần còn lại của hệ thống.

Quảng cáo



Cách thức hoạt động: Ví dụ 1 ứng dụng web được developer A nào đó đóng gói bằng Docker Engine, cái đóng gói được gọi là Docker Image. Trong Docker Image chứa Ubuntu đã cài đặt sẵn apache và ứng dụng web. Docker Image được đưa lên Docker Hub. Sau đó Docker Image được chia sẽ cho các developer B,C,D,E. Từ Docker Image, developer B,C,D,E có thể tạo ra Docker Container, run Docker Container này là có thể thao tác với ứng dụng web mà không cần phải cài đặt môi trường hay các phần mềm liên quan.

Ưu điểm của Container:

  • Có thể triển khai bất cứ nơi đâu do không phụ thuộc vào OS và cơ sở hạ tầng
  • Thời gian khởi động cực nhanh
  • Khi nhiều người cùng phát triển một dự án sẽ không sợ sai khác về môi trường
II. Docker

1. Docker:


Có thể hiểu Docker là nền tảng mở, tạo ra môi trường cho ứng dụng và đóng gói ứng dụng. Ban đầu được viết bằng Python sau đó chuyển sang Go-lang. Docker hỗ trợ nhiều nền tảng hệ điều hành khác nhau bao gồm Linux, Windows và cả Mac. Ngoài ra, Docker còn hỗ trợ nhiều dịch vụ điện toán đám mây nổi tiếng như Microsoft Azure hay Amazon Web Services

2. Các thành phần của Docker:

Quảng cáo



Docker Engine: là phần chính của docker, chứa các tool cho phép người dùng đóng gói ứng dụng, tạo và khởi chạy docker container từ các docker image

Docker Image: tương tự file .gho để ghost win. Một docker image thường chứa OS(Windows, ubuntu, CentOS)và các môi trường lập trình được cài sẵn (httpd, mysqld, nginx, python, git, …). Bạn có thể tải các image từ người khác

Docker Hub: là nơi để mọi người upload, chia sẽ các images Docker của mình (hiện có khoảng 300.000 images)

III. Quy trình của một hệ thống sử dụng Docker

Hệ thống Docker bao gồm 3 bước chính:

docker-la-gi-tai-sao-phai-dung-docker-04.png
Hệ thống Docker bao gồm 3 bước chính (Build -> Push -> Pull,Run)
1. Build:

Đầu tiên chúng ta tạo ra docker image

Docker image được build với 1 máy tính có docker engine.

Sau khi build ta có được docker container, docker container chứa toàn bộ môi trường, thư viện và ứng dụng của chúng ta.

2. Push:


Sau khi có được container, chúng ta sẽ push container này lên đám mây thông qua docker hub.

3. Pull/run:


Nếu 1 member khác trong team muốn dùng container này, họ buộc phải cài đặt Docker Engine. Sau đó Pull Container về máy và Run Container này. Như vậy member này có được môi trường, thư viện và ứng dụng của chúng ta để có thể phát triển thêm mà không cần cài đặt những thứ liên quan.
Theo: blog.azs.vn
3 bình luận
Chia sẻ

Xu hướng

NVMS585
ĐẠI BÀNG
3 năm
Hay
Nó có giống bare metal không?
Bài trên của bạn là build từ máy trắng phải không?

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019