Sổ tay Docker: Hướng dẫn cài đặt Docker

Giới thiệu về Containerization và Docker

Theo IBM,

Containerization bao gồm việc đóng gói hoặc đóng gói mã phần mềm và tất cả các phần phụ thuộc của nó để nó có thể chạy đồng nhất và nhất quán trên bất kỳ cơ sở hạ tầng nào.

‌Nói cách khác, container hóa cho phép bạn gói phần mềm của mình cùng với tất cả các phần mềm phụ thuộc của nó trong một gói khép kín để nó có thể chạy mà không phải trải qua quá trình thiết lập rắc rối.

‌Hãy xem xét một tình huống trong cuộc sống thực ở đây. Giả sử bạn đã phát triển một ứng dụng quản lý sách tuyệt vời có thể lưu trữ thông tin về tất cả các cuốn sách bạn sở hữu và cũng có thể phục vụ mục đích của hệ thống cho mượn sách cho bạn bè của bạn.

‌Nếu bạn tạo danh sách các phần phụ thuộc, danh sách đó có thể trông như sau:

  • Node.js
  • Express.js
  • SQLite3

Vâng, về mặt lý thuyết thì điều này nên xảy ra. Nhưng thực tế cũng có một số thứ khác. Hóa ra Node.js sử dụng một công cụ build được gọi là node-gyp để build các tiện ích bổ sung gốc. Và theo hướng dẫn cài đặt trong kho lưu trữ chính thức, công cụ build này yêu cầu Python 2 hoặc 3 và các công cụ biên dịch C / C++ thích hợp.

Có tính đến tất cả những điều này, danh sách cuối cùng của các phụ thuộc như sau:

  • Node.js
  • Express.js
  • SQLite3
  • Python 2 hoặc 3
  • Các công cụ biên dịch C / C++

Việc cài đặt Python 2 hoặc 3 khá đơn giản bất kể bạn đang sử dụng nền tảng nào. Việc thiết lập chuỗi công cụ C / C++ khá dễ dàng trên Linux, nhưng trên Windows và Mac thì đó là một nhiệm vụ khó khăn.

Trên Windows, gói công cụ xây dựng C++ có dung lượng cả gigabyte và mất khá nhiều thời gian để cài đặt. Trên máy Mac, bạn có thể cài đặt ứng dụng Xcode khổng lồ hoặc gói công cụ dòng lệnh nhỏ hơn nhiều cho Xcode.

Bất kể bạn cài đặt cái nào, nó vẫn có thể bị hỏng khi cập nhật hệ điều hành. Trên thực tế, vấn đề phổ biến đến mức có ghi chú cài đặt cho macOS Catalina trên kho lưu trữ chính thức.

Hãy giả sử rằng bạn đã trải qua tất cả những rắc rối khi thiết lập các phụ thuộc và đã bắt đầu làm việc với dự án. Điều đó có nghĩa là bây giờ bạn đã thoát khỏi nguy hiểm? Dĩ nhiên là không.

Điều gì sẽ xảy ra nếu bạn có một đồng đội sử dụng Windows trong khi bạn đang sử dụng Linux. Bây giờ bạn phải xem xét sự mâu thuẫn trong cách xử lý đường dẫn của hai hệ điều hành khác nhau này. Hoặc thực tế là các công nghệ phổ biến như Nginx không được tối ưu hóa tốt để chạy trên Windows. Một số công nghệ như Redis thậm chí không được tích hợp sẵn cho Windows.

Ngay cả khi bạn vượt qua toàn bộ giai đoạn phát triển, điều gì sẽ xảy ra nếu người chịu trách nhiệm quản lý các máy chủ làm theo quy trình triển khai sai?

Tất cả những vấn đề này có thể được giải quyết nếu chỉ bằng cách nào đó bạn có thể:

  • Phát triển và chạy ứng dụng bên trong một môi trường biệt lập (được gọi là container) phù hợp với môi trường triển khai cuối cùng của bạn.
  • Đặt ứng dụng của bạn bên trong một tệp duy nhất (được gọi là image) cùng với tất cả các phụ thuộc của nó và các cấu hình triển khai cần thiết.
  • Và chia sẻ image đó thông qua một máy chủ trung tâm (được gọi là registry) mà bất kỳ ai có ủy quyền thích hợp đều có thể truy cập được.

Sau đó, đồng đội của bạn sẽ có thể tải xuống image từ registry, chạy ứng dụng như trong một môi trường cô lập không có sự mâu thuẫn cụ thể của nền tảng hoặc thậm chí triển khai trực tiếp trên máy chủ, vì image đi kèm với tất cả các cấu hình sản xuất phù hợp.

Đó là ý tưởng đằng sau quá trình container hóa: đưa các ứng dụng của bạn vào bên trong một gói riêng, làm cho nó di động và có thể tái sản xuất trên nhiều môi trường khác nhau.

Bây giờ câu hỏi là "Docker đóng vai trò gì ở đây?"

Như tôi đã giải thích, container hóa là một ý tưởng giải quyết vô số vấn đề trong phát triển phần mềm bằng cách đưa mọi thứ vào container.

Ý tưởng này có khá nhiều cách triển khai. Docker là một triển khai như vậy. Đó là một nền tảng container hóa mã nguồn mở cho phép bạn container hóa các ứng dụng của mình, chia sẻ chúng bằng cách sử dụng registry công khai hoặc riêng tư và cũng có thể sắp xếp chúng.

Hiện tại, Docker không phải là công cụ container hóa duy nhất trên thị trường, nó chỉ là công cụ phổ biến nhất. Một công cụ container hóa khác mà tôi yêu thích có tên Podman do Red Hat phát triển. Công cụ khác như Kaniko bởi Google, RKT bởi CoreOS cũng rất tuyệt vời, nhưng chúng chưa sẵn sàng để trở thành một sự thay thế cho Docker.

Ngoài ra, nếu bạn muốn có một bài học lịch sử, bạn có thể đọc Lược sử tóm tắt về container từ những năm 1970 đến bây giờ, bao gồm hầu hết các bước ngoặt lớn của công nghệ.

Cách cài đặt Docker

Việc cài đặt Docker rất khác nhau tùy thuộc vào hệ điều hành bạn đang sử dụng. Nhưng nó hoàn toàn đơn giản về mọi mặt.

Docker chạy hoàn hảo trên cả ba nền tảng chính là Mac, Windows và Linux. Trong số đó, quá trình cài đặt trên Mac là dễ nhất, vì vậy chúng ta sẽ bắt đầu với nó.

Cách cài đặt Docker trên macOS

Trên máy Mac, tất cả những gì bạn phải làm là chuyển đến trang tải xuống chính thức và nhấp vào nút Download for Mac.

Bạn sẽ nhận được một tệp Apple Disk Image trông bình thường và bên trong tệp, sẽ có ứng dụng. Tất cả những gì bạn phải làm là kéo tệp và thả nó vào thư mục Applications của bạn.

Cách cài đặt Docker trên macOS

Bạn có thể khởi động Docker bằng cách nhấp đúp vào biểu tượng ứng dụng. Khi ứng dụng khởi động, bạn sẽ thấy biểu tượng Docker xuất hiện trên thanh menu của mình.

Cách cài đặt Docker trên macOS

Bây giờ, bạn hãy mở terminal lên, chạy lệnh docker --versiondocker-compose --version để đảm bảo quá trình cài đặt đã thành công.

Cách cài đặt Docker trên Windows

Trên Windows, quy trình này gần như giống nhau, ngoại trừ có một số bước bổ sung mà bạn sẽ cần phải thực hiện. Các bước cài đặt như sau:

  1. Điều hướng đến trang web này và làm theo hướng dẫn để cài đặt WSL2 trên Windows 10.
  2. Sau đó chuyển đến trang tải xuống chính thức và nhấp vào nút Download for Windows.
  3. Nhấp đúp vào trình cài đặt đã tải xuống và thực hiện cài đặt với các giá trị mặc định.

Sau khi cài đặt xong, hãy khởi động Docker Desktop từ Start Menu hoặc màn hình desktop của bạn. Biểu tượng docker sẽ hiển thị trên thanh tác vụ của bạn.

Cách cài đặt Docker trên Windows

Bây giờ, hãy mở Ubuntu hoặc bất kỳ bản phân phối nào bạn đã cài đặt từ Microsoft Store. Thực thi các lệnh docker --versiondocker-compose --version để đảm bảo rằng quá trình cài đặt đã thành công.

Cách cài đặt Docker trên Windows

Bạn cũng có thể truy cập Docker từ Command Prompt hoặc PowerShell thông thường của mình. Chỉ là tôi thích sử dụng WSL2 hơn bất kỳ dòng lệnh nào khác trên Windows.

Cách cài đặt Docker trên Linux

Cài đặt Docker trên Linux là một quá trình hơi khác và tùy thuộc vào bản phân phối mà bạn đang sử dụng, nó có thể khác nhau nhiều hơn. Nhưng thành thật mà nói, việc cài đặt cũng dễ dàng (nếu không muốn nói là dễ hơn) như hai nền tảng còn lại.

Các gói phần mềm Docker Desktop trên Windows hoặc Mac là một tập hợp các công cụ như Docker Engine, Docker Compose, Docker Dashboard, Kubernetes và một vài tính năng khác.

Tuy nhiên, trên Linux, bạn không nhận được một gói như vậy. Thay vào đó, bạn cài đặt tất cả các công cụ cần thiết mà bạn cần theo cách thủ công. Quy trình cài đặt cho các bản phân phối khác nhau như sau:

Khi cài đặt xong, bạn mở terminal lên rồi chạy lệnh docker --versiondocker-compose --version để đảm bảo quá trình cài đặt đã thành công.

Cách cài đặt Docker trên Linux

Mặc dù Docker hoạt động khá tốt bất kể bạn đang sử dụng nền tảng nào, nhưng tôi thích Linux hơn các nền tảng khác. Trong suốt cuốn sách, tôi sẽ chuyển đổi giữa các máy trạm Ubuntu 20.10 và Fedora 33 của mình.

Một điều khác mà tôi muốn làm rõ ngay từ đầu, đó là tôi sẽ không sử dụng bất kỳ công cụ GUI nào để làm việc với Docker trong toàn bộ cuốn sách.

Tôi biết các công cụ GUI tuyệt vời có sẵn cho các nền tảng khác nhau, nhưng học các lệnh của Docker phổ biến là một trong những mục tiêu chính của cuốn sách này.

DockerDevOps
Bài Viết Liên Quan:
Deploy ứng dụng ASP.NET Core bằng Docker
Trung Nguyen 29/03/2021
Deploy ứng dụng ASP.NET Core bằng Docker

Bài viết này sẽ hướng dẫn bạn chi tiết cách deploy ứng dụng ASP.NET Core bằng Docker.

Sổ tay Docker: Cách sử dụng Docker Compose
Trung Nguyen 20/03/2021
Sổ tay Docker: Cách sử dụng Docker Compose

Trong hướng dẫn này, bạn sẽ tìm hiểu các kiến thức cơ bản về Docker Compose, cách chạy và quản lý các dịch vụ sử dụng Docker Compose.

Sổ tay Docker: Cách chạy ứng dụng JavaScript trên nhiều Container
Trung Nguyen 20/03/2021
Sổ tay Docker: Cách chạy ứng dụng JavaScript trên nhiều Container

Trong hướng dẫn này, bạn sẽ học cách triển khai ứng dụng trên nhiều container trong Docker.

Sổ tay Docker: Thao tác Docker Network cơ bản
Trung Nguyen 19/03/2021
Sổ tay Docker: Thao tác Docker Network cơ bản

Bạn sẽ tìm hiểu các kiến thức cơ bản về Docker Network, các thao tác mạng cơ bản như: tạo và xóa mạng, gắn container vào mạng, gỡ container khỏi mạng.