Docker là gì? Nó hoạt động như thế nào? Mục đích của Docker là gì?

Docker là gì? Có phải bạn đang chưa biết gì về Docker và đang muốn tìm hiểu về nó? Về cơ bản, Docker ra đời để giải quyết những rắc rối và đồng nhất các môi trường có nhiều applications khác nhau.

Như một dòng chảy bất tận của cuộc sống – lớp sóng sau ra đời vỗ về lớp sóng trước, công nghệ cũng có một dòng chảy bất tận. Với công nghệ, luôn có những vấn đề rắc rối phát sinh đợi được giải quyết. Do vậy, luôn có công nghệ thế hệ sau tiên tiến và ưu việt hơn ra đời. Docker là một trong những nền tảng như vậy.

Mời bạn cùng trôi vào dòng lịch sử của các nền tảng công nghệ để hiểu rõ ngọn ngành và xem Docker thật sự là gì? Nó ra đời nhằm mục đích gì? Nó hoạt động như thế nào và nó giúp ích được gì cho bạn?

1. Docker là gì?

Docker là một nền tảng cho phép các nhà phát triển và sysadmin triển khai và chạy ứng dụng với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy, phát triển ứng dụng và môi trường này được gọi là container. Khi cần triển khai lên bất kỳ server nào chỉ cần chạy container của Docker thì ứng dụng của bạn sẽ được khởi chạy ngay lập tức.

Hình ảnh minh họa Docker là gì? (Nguồn: Internet)

Đây là cách hiểu về Docker là gì? Tuy nhiên, nếu bạn không phải là người chuyên về các nền tảng công nghệ, chúng tôi hiểu rằng khái niệm trên chưa đủ rõ ràng để bạn có thể hình dung nó là gì. Để đơn giản hóa vấn đề, mời bạn cùng tìm hiểu về lịch sử các nền tảng công nghệ. Điều này sẽ giúp cho mọi người hiểu về Docker là gì? một cách dễ dàng.

2. Dòng chảy lịch sử hình thành các nền tảng công nghệ

2.1 Containerization là gì ?

Lúc mới hình thành, mô hình máy chủ cơ bản thường sẽ như sau:

Máy chủ vật lý (physical server) + hệ điều hành(operating system) + ứng dụng (application).

Hình ảnh minh họa (Nguồn: Internet)

Vấn đề lúc bấy giờ là mỗi máy chủ chỉ cài được một guest OS. Cho dù là ổ cứng của máy đó khủng như thế nào, bộ nhớ RAM lớn thế nào thì cũng không tận dụng hết được bộ nhớ. Như vậy, một sự lãng phí tài nguyên bắt đầu phát sinh dẫn đến sự ra đời của công nghệ ảo hóa virtualization.

2.2 Virtualization là gì?

Có thể bạn đã nghe qua những cái tên như Virtualbox hay VMware rồi đúng không? Vâng, chính xác là nó. Với công nghệ này, trên một máy chủ vật lý mình có thể cài đặt được nhiều OS, tận dụng tài nguyên đã tốt hơn.

Hình ảnh minh họa (Nguồn: Internet)

Điều này mang lại cho người dùng những trải nghiệm tốt hơn, giả sử bạn đang sử dụng Ubuntu trên máy tính để lập trình, sau đó cài VirtualBox thì bạn có thể:

  • Cài thêm Windows 10, thực hiện các tác vụ văn phòng như Word, Excel, Powerpoint,.. mượt mà hơn hoặc thi thoảng có thời gian thì vào làm trận game cũng được.
  • Cài thêm CentOS – thử trải nghiệm nhánh RedHat của họ nhà Linux xem sao do Ubuntu thuộc nhánh Debian.

Như vậy là nhờ sự cải tiến bước đầu đã giúp bạn cài được nhiều hệ điều hành để phục vụ cho những mục đích khác nhau.

Nhưng bạn biết không, vấn đề lại tiếp tục phát sinh như sau:

  • Về tài nguyên: Khi bạn bật máy ảo trên VirtualBox chẳng hạn, bạn cần cấu hình để cung cấp ngay từ đầu tài nguyên ổ cứng và ram từ máy thật cho máy ảo. Bật máy ảo lên rồi để đó không làm gì thì máy thật cũng không thể tái sử dụng tài nguyên đã cho đi.

Ví dụ: Khi tạo một máy ảo ram 2GB trên máy thật ram 8GB, lúc này máy thật sẽ chỉ còn tối đa 8 – 2 =  6GB RAM, kể cả khi máy ảo không dùng hết 2GB ram được cấp. Điều này lại là một sự lãng phí tài nguyên.

  • Về độ mượt mà: Thời gian để khởi động và tắt máy ảo khá lâu, việc này có khi kéo dài hàng phút. Với các sản phẩm công nghệ, thời gian người dùng chờ phải tính bằng phút thì không phải là một công nghệ “mượt mà”.

Do đó, người ta sinh ra công nghệ containerization – đây là một bước tiến triển mới.

2.3 Containerization là gì?

Được biết với công nghệ này, trên một máy chủ vật lý, ta sẽ cài đặt được nhiều máy ảo (giống với công nghệ ảo hóa virtualization). Song, bước cải tiến nằm ở chỗ là các máy con (Guess OS) đều dùng chung phần nhân của máy mẹ (Host OS) và chia sẻ với nhau tài nguyên máy mẹ, giúp tận dụng được tài nguyên.

Có thể nói với công nghệ containerization, các máy con được máy mẹ cấp tài nguyên, khi nào cần thì được cấp, cần bao nhiêu cấp bấy nhiêu giúp cho nguồn tài nguyên được tối ưu hóa. Đỉnh cao của containerization là nó sử dụng các container. 

3. Container là gì?

Container là bước tiến vượt trội được một kỹ sư của Google hết lòng khen ngợi như sau:

Container là gì?

Hình ảnh minh họa (Nguồn: Internet)

Các phần mềm, chương trình sẽ được Container Engine (là một công cụ ảo hóa tinh gọn được cài đặt trên host OS) đóng gói thành các container. Đây là một giải pháp để chuyển giao phần mềm một cách đáng tin cậy giữa các môi trường máy tính khác nhau.

Nhiệm vụ của những chiếc thùng (container) là:

  • Tạo ra một môi trường chứa mọi thứ mà phần mềm cần để có thể chạy được.
  • 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.

Bạn có thể hiểu là ruby, rails, mysql … kia được bỏ gọn vào một hoặc nhiều cái thùng (container), ứng dụng của bạn chạy trong những chiếc thùng đó, đã có sẵn mọi thứ cần thiết để hoạt động, không bị ảnh hưởng từ bên ngoài và cũng không gây ảnh hưởng ra ngoài.

4. Sự ra đời của Docker

Phần mong chờ nhất cũng đã xuất hiện. Bạn thấy đấy, với công nghệ ảo hóa (virtualization) thì ta có thể dùng công cụ Virtualbox hay VMware. Còn đối với containerization, mỗi ông lớn công nghệ dùng một công cụ khác nhau, gọi là Private Source Code ( thuộc quản lý riêng của họ).

Do vậy, một ngày đẹp trời cách đây cũng khá lâu, có một công ty tiến hành Public (phổ biến) Source Code của họ về công nghệ Containerization. Sản phẩm đó mang tên là Docker, điều mà chúng ta mong đợi và quả thực nó đã gây được một tiếng vang.

Docker là gì?

Sự ra đời của Docker là gì? (Nguồn: Internet)

Sau thành công đó, công ty cũng đổi tên thành Docker và họ tiến hành cung cấp công cụ Docker miễn phí. Tuy nhiên, công ty lại có thể kiếm được rất nhiều tiền từ các dịch vụ khác đi kèm với Docker.

Với sự bùng nổ của việc sử dụng container cùng với những lợi ích lớn mà nó mang lại, gã khổng lồ phần mềm Microsoft không muốn bỏ qua cơ hội màu mỡ này với việc cho ra mắt tính năng mới có tên Windows Container.

5. Docker mang lại cho bạn lợi ích gì?

Không như máy ảo, việc khởi động và tắt Docker nhanh chóng, chỉ trong vài giây. Bạn có thể khởi chạy container trên mỗi hệ thống mà bạn muốn. Container có thể được xây dựng và loại bỏ nhanh hơn máy ảo.

Dễ dàng thiết lập môi trường làm việc, bạn chỉ cần config 1 lần duy nhất và không bao giờ phải cài đặt lại các dependencies. Nếu bạn thay đổi máy hoặc có người mới tham gia vào dự án thì bạn chỉ cần lấy config đó và đưa cho họ.

Tìm hiểu về Docker

Lợi ích của Docker là gì? (Nguồn: Internet)

Nó giữ cho không gian làm việc máy tính “word-space” của bạn sạch sẽ hơn. Bạn có thể dễ dàng xóa bỏ nó đi mà không ảnh hưởng đến các nguồn tài nguyên khác.

6. Những điều bạn cần biết về Docker là gì?

  • Docker Client: là cách mà bạn tương tác với docker thông qua lệnh trong các cổng (terminal). Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon.
  • Docker Daemon: là server Docker cho yêu cầu từ Docker API. Nó quản lý hình ảnh (images), containers, mạng (networks) và âm lượng (volume).
  • Docker Volumes: có thể nói đây là cách tốt nhất để lưu trữ dữ liệu liên tục cho việc sử dụng và tạo các apps.
  • Docker Registry: là nơi lưu trữ riêng của Docker Images. Hình ảnh được đẩy (push) vào hệ thống đăng ký (registry) và các máy con (client) sẽ kéo hình ảnh về từ hệ thống đăng ký. Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure.
  • Docker Hub: là Registry lớn nhất của Docker Images ( mặc định). Có thể tìm thấy hình ảnh và lưu trữ hình ảnh của riêng bạn trên Docker Hub, nó miễn phí.

Docker Hubs là gì

Docker Hub là gì? (Nguồn: Internet)

  • Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags. VD: golang:1.11-alpine.
  • Docker Networking: cho phép kết nối các container lại với nhau. Kết nối này có thể trên 1 host hoặc nhiều host.
  • Docker Compose: là công cụ cho phép chạy chương trình với nhiều Docker containers một cách dễ dàng hơn. Docker Compose cho phép bạn config các lệnh trong file docker-compose.yml để sử dụng lại. Có sẵn khi cài Docker.
  • Docker Swarm: để phối hợp triển khai container.
  • Docker Services: là các containers trong nhà máy sản xuất (production). Thường thì mỗi dịch vụ chỉ cung cấp một hình ảnh nhưng nó mã hóa cách thức để chạy hình ảnh đó. Ví dụ như lấy hình ảnh tại cảng (port) nào? Cần bao nhiêu bản sao container? Điều này giúp Services làm việc với hiệu năng tốt và phản hồi bạn ngay lập tức.

Hoạt động của Docker

Những điều cần biết về Docker là gì? (Nguồn: Internet)

7. Cài đặt như thế nào?

>>> Link download: Get Docker tại đây

Chọn bản cài đặt tương ứng với hệ điều hành của bạn và tiến hành cài đặt theo hướng dẫn trong link đối với Linux. Nếu như bạn sử dụng hệ điều hành Windows và MacOS thì bạn chỉ cần tải bản cài về và tiến hành cài đặt như mọi ứng dụng khác. 

Lời kết

Bài viết trên ra đời với mục đích giúp bạn đọc hiểu được Docker là gì? Nó hoạt động như thế nào và những kiến thức cơ bản nhất cần biết về Docker.

Totvadep.com hy vọng rằng đã cung cấp được cho bạn những thông tin hữu ích. Cảm ơn bạn vì đã dành thời gian theo dõi bài viết này. Nếu có thắc mắc gì cần trao đổi thêm, mời bạn để lại comment trong phần bình luận bên dưới. Chúc bạn thành công!

>> Xem thêm: Scrum là gì? & lý do nên sử dụng Scrum tại đây

Rate this post

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *