Home / Docker / Tìm hiểu về Docker – Xây dựng Nodejs server đơn giản với Docker (Phần 1)

Tìm hiểu về Docker – Xây dựng Nodejs server đơn giản với Docker (Phần 1)

Khái niệm Docker có lẽ không quá xa lạ. Khi bạn đã quá mệt mỏi với việc setup một project mới để development với các stack quen thuộc như LEMP, LAMP, MEAN, MERN, … Hãy đến ngay với liều thuốc an thần Docker, Setup 1 lần và run everywhere 😁. Vậy Docker là gì mà thần thánh như thế ???

Build Nodejs server với Dockerfile

Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa.

Docker cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux. Docker sử dụng những tài nguyên cô lập của Linux như cgroups, kernel, quản lý tệp để cho phép các container chạy độc lập bên trong một thực thể Linux.

Nhìn qua thì có vẻ khó hiểu, nhưng đơn giản hóa lại, nó là câu trả lời cho những câu hỏi dạng như sau:

  • Sao tôi cứ phải cài đi cài lại mãi cái đống lằng nhằng này từng chút một oải quá (Mặc dù đã lưu rất nhiều tài liệu và cú pháp cài đặt về LAMP, LEMP, MEAN, MERN,… 😁) ???
  • Sao tôi cài được trên máy nhưng lúc lên server lại ngỏm!!!
  • Sao máy em code ngon lành mà lên server lỗi lòi hết cả ra hả anh ơi 😐 ???

Những câu hỏi trên Docker đều trả lời được hết bởi vì:

  • Linh động: Có thể triển khai mọi nơi với chỉ một lần thiết lập
  • Nhẹ: Docker là một công cụ ảo hóa tinh gọn được cài đặt trên host OS tạo ra một môi trường đầy đủ công cụ hay phần mềm chỉ định cần thiết.
  • Đồng nhất: Khi có nhiều người cùng phát triển thì cũng không sợ bị sai lệch thông số về môi trường, hệ điều hành (Linux – Window), version của ngôn ngữ – CSDL (PHP 5.6 – 7.0, MySQL 5.7 – 8.0)
  • Triển khai: Dễ dàng tích hợp CI – CD và triển khai các hệ thống có mô hình phân tán như Microservice.

Ưu nhược điểm về Docker hay tài liệu về nó nhiều lắm mà nội dung trong bài viết này mình không thể liệt kê hết được nên các bạn có thể tham khảo trực tiếp trên trang chủ của nó ở đây nhé Docker Official.

1. Cài đặt Docker và một số khái niệm cơ bản:

Hiện tại mình đang dùng hệ điều hành Ubuntu nên phần cài đặt trong bài viết này chỉ dành cho Ubuntu. Các bạn khác hệ điều hành với mình có thể tham khảo thêm tại đây Docker Install.

Docker có 2 phiên bản là CE( dành cho nhà phát triển, nhóm nhỏ, coder 😬) và EE (dành cho doanh nghiệp).

Trước tiên các bạn cần chạy các dòng lệnh như sau:

Sau khi đã cài những dòng lệnh trên. Tiếp tục cài Docker CE:

Nếu câu lệnh cuối cùng bạn chạy lên có kết quả như sau thì bạn đã thành công.

docker-hello-world

  • Nếu các bạn muốn chạy Docker non-root user nghĩa là không cần phải thêm lệnh sudo thì gõ tiếp dòng lệnh sau:
Docker có hai khái niệm chính cần hiểu, đó là ImageContainer

  • Image: là phần khung định nghĩa Container sẽ chạy những gì, chứa những cái gì bên trong (Hệ điều hành, Web server, PHP, MySQL, NodeJS, …)
  • Container: Tương tự như một máy ảo, xuất hiện khi khởi chạy Image. Tốc độ khởi chạy Container nhanh hơn tốc độ khởi chạy máy ảo vật lí rất nhiều và bạn có thể thoải mái chạy 4, 5 container cùng lúc mà không sợ treo máy.

Docker hub là một nơi lưu trữ các file Image. Bạn có thể dễ dàng tìm kiếm những môi trường, công cụ, bộ cài ngôn ngữ, CSDL có sẵn, được chính những nhà phát hành chính thức tạo nên hoặc bạn có thể tự dựng cho mình một Image riêng biệt.

2. Một số câu lệnh cơ bản của Docker:

  • Pull một Image từ Docker hub: 
  • Khởi tạo một Container bằng cách run Images 
    -v: Có nghĩa là bạn sẽ ánh xạ (Mount)  một thư mục trên local đồng bộ với thư mục trên Container nhằm đảm bảo dữ liệu được lưu trữ và nhận sự thay đổi liên tục (code trên local thay đổi thì trên Container cũng sẽ thay đổi theo)

    -p: Cho phép bạn kết nổi port trên máy bạn vào port trên container. Tốt nhất nên để hai tham số này bằng nhau để tránh bị nhầm lẫn.

Ví dụ với lệnh run images:

Sau khi chạy thành công các bạn gõ dòng lệnh sau để kiểm tra thông tin về bản ubuntu mà bạn vừa chạy trên Container:

  • Một số câu lệnh khác
  • Lưu ý: Tham số image_id/name hay container_id/name ở đây nghĩa là id hoặc name của image – container. Ví dụ: docker rmi 7698f282e524.

Tổng kết: Phần 1 của chúng ta đã cùng nhau tìm hiểu về Docker, khái niệm và lý thuyết cùng một số các câu lệnh cơ bản. Trong phần sau mình sẽ hướng dẫn các bạn tạo Dockerfile và làm thế nào để setup một Nodejs server trên Docker.

Có góp ý hay sai sót nào mong các bạn comment bên dưới để chúng ta có thể cùng nhau trau dồi thêm kiến thức. Chúc các bạn thành công và vận dụng được kiến thức của mình vào thực tiễn cũng như công việc.

About Chung Chích Choè

I am Developer

3 comments

  1. Bài viết hay quá. cám ơn anh đã cho chúng em những bài học bổ ích như vậy. chúc anh thật nhìu sức khỏe và thành công trong cuộc sống. hy vọng mỗi tuần anh ra một bài để chúng em có thể xem những kiến thức bổ ích mỗi tuần ạ. cám ơn anh rất nhiều.

    • Chung Chích Choè

      Cảm ơn em đã quan tâm và đóng góp ý kiến. Anh sẽ cố gắng để duy trì tiến độ 😁

Leave a Reply

Your email address will not be published. Required fields are marked *