Giới thiệu về Docker

Bài viết này là phần 2 trong 4 phần của serie bài viết Giới thiệu chung về Docker

ToiVietBlog - Bài viết này tôi sẽ giới thiệu với các bạn về docker. Ở bài viết trước, các bạn hiểu container là “hộp” đóng gói ứng dụng của bạn. Nhưng bản thân container không thôi thì chưa đủ.

Giới thiệu về Docker – Docker là gì?

Container giúp bạn đóng gói ứng dụng của bạn. Nhưng bạn cần có môi trường để triển khai, quản lý các container này.

Docker chính là môi trường này. Docker là môi trường hoạt động cho container. Nó giúp bạn tạo, xóa image container, triển khai và quản lý container thông quan cli.

Bạn có thể đọc thêm về Docker tại đây.

gioi-thieu-ve-docker Giới thiệu về Docker
Kiến trúc Docker. Nguồn ảnh: Data Flair.

Docker dùng để làm gì?

Ở trên mình đã giới thiệu sơ qua về “khái niệm” docker. Sau đây chúng ta sẽ tìm hiểu Docker dùng để làm gì.

Đối với các lập trình viên

Đây là nhóm đầu tiên nhận được sự hữu ích từ docker. Thống nhất môi trường phát triển giữa các thành viên trong nhóm, giữa môi trường dev và môi trường product.

Vấn đề của lập trình viên

Nếu bạn là một lập trình viên, hẳn bạn biết rằng mỗi người sử dụng một môi trường khác nhau để lập trình ứng dụng. Có người sử dụng MacOS, có người sử dụng Windows, có người sử dụng Ubuntu. Và mọi thứ khi chạy ở môi trường máy tính cá nhân của lập trình viên đều khá thuận lợi.

Nhưng khi triển khai ứng dụng lên máy chủ Linux, môi trường hoàn toàn khác và lúc này ứng dụng xảy ra lỗi. Bạn sẽ rất đau đầu và tốn thời gian để có thể cài đặt cũng như tìm ra nguyên nhân lỗi. Chỉ đơn giản vì khác môi trường. Đây mới chỉ là nói một người làm việc độc lập.

Vậy bạn thử hình dung, nếu một nhóm làm việc từ vài chục cho đến hàng trăm người. Mỗi người trong nhóm lại cài đặt môi trường khác nhau thì khi triển khai lên product thì sẽ lỗi như thế nào.

Giải pháp docker cho lập trình viên

Với docker, bạn có thể tạo ra một image để sử dụng cho cả team. Và nhờ vậy, môi trường lập trình của mọi người đều sẽ như nhau bất kể là bạn sử dụng MacOS hay Windows.

Toàn bộ code của ứng dụng đều được đóng gói trong image container, các thành viên trong team có thể sử dụng nó giống nhau trên tất cả các máy.

Việc cài đặt và sử dụng docker trên các hệ điều hành khác nhau là như nhau.

Đối với người quản trị hệ thống

Đây chính là những sysadmin/người quản trị hệ thống. Bản thân mình cũng là một sysadmin và mình hiểu vấn đề này.

Vấn đề của người quản trị hệ thống

Đối với sysadmin mà nói, việc đảm bảo hệ thống hoạt động 24/7 an toàn và ổn định là ưu tiên hàng đầu. Nhưng sẽ có lúc bạn gặp phải bài toán như thế này.

Máy chủ của bạn đang chạy ứng dụng tạm gọi là App 1, nó đang sử dụng PHP 5.6 chẳng hạn. Bây giờ, bạn nhận được yêu cầu triển khai thêm một ứng dụng khác (App 2) chạy PHP 7.4. Vấn đề nảy sinh, vì máy chủ đang chạy PHP 5 nên không thể chạy được App 2. Nếu bạn update PHP lên phiên bản 7.4 thì App 1 lại không hoạt động nữa.

Đây chính là vấn đề xung đột trong hệ thống.

Người quản trị hệ thống lúc này sẽ có một số giải pháp để giải quyết:

  • Tạo mới một máy chủ khác và cài đặt App 2 lên đó, hoàn toàn độc lập với App 1. Tốn thêm tài nguyên máy chủ.
  • Yêu cầu thiết kế App 2 chạy phiên bản PHP 5.6 và điều này hoàn toàn không được bởi vì nó tốn thời gian và không thể quay ngược thiết kế.
  • Chấp nhận xung đột, thử cài đặt PHP multi-version trên máy chủ và cho chạy cả 2 App trên đó. Điều này hoàn toàn có thể gây lỗi trong tương lai mà bạn cũng không lường trước được.
Giải pháp cho người quản trị hệ thống

Nếu bạn sử dụng docker, bạn sẽ nhận ra lợi ích của nó bây giờ trong bài toán này. Docker sẽ chạy 2 container khác nhau, 1 container chạy PHP 5.6 và 1 container chạy PHP 7.4. Và 2 container này hoàn toàn độc lập với nhau về môi trường ứng dụng, điều đó cho phép không có xung đột giữa 2 ứng dụng.

Đối với doanh nghiệp

Doanh nghiệp là chủ thể cuối cùng được lợi ích từ docker và nó bao gồm cả lập trình viên lẫn người quản trị hệ thống.

Vấn đề của doanh nghiệp

Trong môi trường phát triển công nghệ hiện nay, tốc độ là một yếu tố quan trọng. Mỗi ngày một ứng dụng có thể sẽ phải test và cập nhật hàng ngàn tính năng mới.

Với cách triển khai truyền thống, mỗi lần test tính năng/công nghệ mới thì bạn sẽ phải cài đặt mọi thứ từ đầu: tạo máy ảo, cài đặt môi trường, deploy ứng dụng test lên máy chủ,… và lặp lại các bước như vậy.

Điều đó khá tốn thời gian, tốn tài nguyên hệ thống.

Giải pháp docker cho doanh nghiệp

Docker sẽ giải quyết các vấn đề trên một cách dễ dàng.

  • Tạo môi trường test nhanh chóng, không gây xung đột.
  • Có thể áp dụng vào hệ thống product nhanh chóng.
  • Có thể thu hồi tài nguyên nhanh hơn so với cách truyền thống.
  • Tiết kiệm tài nguyên.

Bạn hình dung, ví dụ lập trình viên muốn thử một ứng dụng nodejs chạy trên ubuntu 18. Trong khi đó, hệ thống product đang chạy php và centos 7.

Với docker, chỉ cần tạo 1 container nodejs base image ubuntu 18. deploy app trên container, test xong và xóa container. Tất cả quy trình này hoàn toàn có thể diễn ra chỉ trong vài phút.

Kết luận

Bài viết này mình không đi sâu vào kiến trúc của Docker mà mình hướng đến khả năng giải quyết vấn đề của nó. Với bài viết giới thiệu về docker, hy vọng những bạn mới tiếp xúc có thể hiểu được nó có thể làm gì.

Tiếp tục đọc serie bài viết«« Phần trước: Giới thiệu sơ qua về ContainerPhần tiếp theo: So sánh giữa máy chủ vật lý, VPS và Docker »»
0 0 votes
Article Rating
Nhấn vào đây để đánh giá bài này!
[Tổng: 0 - Trung bình: 0]

If you appreciate what we share in this blog, you can support us by:
  1. Stay connected to: Facebook | Twitter | Google Plus | YouTube
  2. Subscribe email to recieve new posts from us: Sign up now.
  3. Start your own blog with SSD VPS - Free Let's Encrypt SSL ($2.5/month).
  4. Become a Supporter - Make a contribution via PayPal.
  5. Support us by purchasing Ribbon Lite Child theme being using on this website.

We are thankful for your support.

«« »»
Theo dõi
Thông báo về
guest
0 Comments
Inline Feedbacks
View all comments