Hành trình đầu tiên với Docker: Từ cài đặt đến chạy ứng dụng trong 10 Phút

| 21 Tháng 6, 2023

Bạn mới bắt đầu với Docker? Bài viết này sẽ dẫn bạn qua từng bước cài đặt Docker và tạo một ứng dụng đơn giản chỉ trong 10 phút.

I. Docker là gì?

Docker là một nền tảng ảo hoá giúp developer đơn giản hóa quá trình phát triển, triển khai và quản lý ứng dụng bằng cách đóng gói dự án và tất cả các thành phần phụ thuộc của vào một container tạo nên sự nhất quán giữa các môi trường phát triển. Khi cần deploy dự án developer chỉ cần run container là ứng dụng sẽ được chạy ngay lập tức.

II. Tại sao nên sử dụng Docker?

Với đa số các dự án các bạn đều có thể sử dụng Docker để phát triển và đây là 4 lý do khiến bạn nên dùng Docker:

1. Nhất quán giữa môi trường phát triển(Local) và môi trường sản xuất(Prod): Docker giúp đảm bảo ứng dụng chạy đúng cách trên máy tính của developer và trên môi trường thật (Production) mà không cần phải lo lắng về sự khác biệt giữa hai môi trường.

2. Quản lý các plugin, package và phiên bản của chúng: Trong quá trình phát triển sẽ có nhiều developer tham gia vào cùng phát triển 1 dự án. Docker giúp thống nhất chung về việc cài đặt các plugin, package phụ thuộc và phiên bản của chúng giúp cho việc quản lý và phát triển dự án dễ dàng và hạn chế lỗi hơn.

3. Phát triển đa nền tảng: Với khả năng chạy trên mọi nền tảng, từ máy tính cá nhân đến đám mây, Docker làm cho việc phát triển và triển khai trở nên linh hoạt hơn.

4. Tích hợp CI/CD: Bạn có thể tích hợp dễ dàng Docker vào quy trình CI/CD, giúp tự động hóa quy trình triển khai và kiểm thử ứng dụng một cách linh hoạt và hiệu quả.

Okay. Có lẽ bạn cũng hiểu một chút về Docker rồi nhỉ. Vậy bạn đã sẵn sàng với dự án Docker đầu tiên của mình chưa? Let’s goooo.

III. Cài đặt Docker Desktop trên Windows, Mac và Linux

Link download Docker: tại đây

Các bạn truy cập và tải xuống bản cài đặt tương ứng với hệ điều hành của mình nhé. Với Windows và Mac các bạn tải và cài đặt giống như các ứng dụng bình thường, còn Linux thì bạn có thể làm theo hướng dẫn của tài liệu.

Sau khi cài đặt xong các bạn có thể kiểm tra xem có thành công hay không bằng lệnh trong command line:

$ docker -v
$ docker info
$ docker run hello-world

Lưu ý: Với hệ điều hành Windows các bạn cần cài đặt WSL để tối ưu hiệu suất khi sử dụng Docker Desktop. Nếu các bạn chưa biết bật WSL trên Windows thì có thể tham khảo bài viết khá chi tiết của mình WSL là gì? Tại sao nên sử dụng WSL khi phát triển ứng dụng với Docker trên Windows.

IV. Một số khái niệm cơ bản trong Docker

1. Image: Image là một gói đóng gói chứa mọi thứ cần thiết để chạy một ứng dụng, bao gồm mã nguồn, thư viện, biến môi trường, tệp cấu hình, và các phần khác. Image là cơ sở để tạo containers.

2. Container: Container là một thực thể thực hiện chạy một instance của một image. Nó tạo ra một môi trường cô lập để chạy ứng dụng mà không ảnh hưởng đến hệ thống host.

3. Dockerfile: Dockerfile là một tệp văn bản chứa các hướng dẫn để tạo một image. Nó mô tả các bước cụ thể để cài đặt và cấu hình môi trường trong image.

4. Registry: Registry là nơi lưu trữ và phân phối các images Docker. Docker Hub là registry công cộng phổ biến, nhưng bạn cũng có thể triển khai registry riêng (ví dụ, Docker Trusted Registry).

5. Volume: Volume là một cơ chế để lưu trữ dữ liệu ngoại vi của container, giúp dữ liệu tồn tại và không bị mất khi container dừng lại.

6. Network: Docker Network là một cơ chế để kết nối các container với nhau và với mạng bên ngoài. Nó giúp các container trò chuyện và làm việc với nhau như trên một mạng nội bộ.

7. Docker Hub: Docker Hub là một dịch vụ registry công cộng miễn phí được Docker cung cấp, nơi bạn có thể chia sẻ và tìm kiếm các images Docker đã được xây dựng sẵn.

8. Docker Swarm: Docker Swarm là một công cụ orchestration tích hợp sẵn trong Docker, cho phép quản lý và mở rộng tự động các container trên một cụm máy chủ.

9. Service: Trong Docker Swarm, một service định nghĩa cách một container phải chạy trong một cụm Swarm, bao gồm số lượng replicas, cổng, mạng, và các cấu hình khác.

V. Dockerfile

Như đã mô tả ở trên Dockerfile là file config chứa các lệnh để tạo ra một image. Nó mô tả các bước cụ thể để cài đặt và cấu hình môi trường trong image dựa trên cài đặt của người xây dựng.

1. FROM: Sử dụng để chỉ định image cơ bản mà bạn sẽ bắt đầu cấu trúc Dockerfile. Mọi hướng dẫn sau đó sẽ được thực hiện trên image này.

FROM ubuntu:20.04

2. RUN: Container là một thực thể thực hiện chạy một instance của một image. Nó tạo ra một môi trường cô lập để chạy ứng dụng mà không ảnh hưởng đến hệ thống host.

RUN apt-get update && apt-get install -y package-name

3. COPY và ADD: Sao chép tệp và thư mục từ máy tính host vào image. Có ý nghĩa tương tự nhau.

RUN apt-get update && apt-get install -y package-name

4. WORKDIR: Đặt thư mục làm việc cho các lệnh RUN, CMD, ENTRYPOINT, COPY, và ADD tiếp theo trong Dockerfile.

WORKDIR /path/to/working/directory

5. EXPOSE: Chỉ định cổng mà container sẽ lắng nghe khi chạy. Tuy nhiên, nó không mở cổng trong host, chỉ là một metadata giúp người đọc hiểu các cổng mà ứng dụng sẽ sử dụng.

EXPOSE 80

6. CMD: Cung cấp một môi trường thực thi mặc định cho container khi nó chạy. CMD có thể được ghi đè từ dòng lệnh khi chạy container.

CMD ["executable","param1","param2"]

7. ENTRYPOINT: Cung cấp một môi trường thực thi mặc định cho container khi nó chạy. ENTRYPOINT cũng giữ lại các tham số được chuyển từ dòng lệnh khi container chạy.

ENTRYPOINT ["executable", "param1", "param2"]

8. ENV: Đặt một biến môi trường trong image.

ENV KEY=value

9. ARG: Định nghĩa các biến mà bạn có thể sử dụng trong Dockerfile, chủ yếu được sử dụng để truyền các giá trị từ lệnh docker build.

ARG variable=value

10. VOLUME: Khai báo một hoặc nhiều thư mục hoặc đường dẫn vào trong container có thể được ánh xạ từ máy chủ hoặc các container khác.

VOLUME /path/to/volume

VI. Chạy ứng dụng với Docker đầu tiên của bạn

Trong hướng dẫn này. Mình sẽ sử dụng một ví dụ với dự án Nextjs với Docker để các bạn dễ hình dung nhé.

Bước 1: Mở WSL Ubuntu và tạo một thư mục để chứa toàn bộ dự án.

$ mkdir -p docker-project
$ cd docker-project

Bước 2: Tạo ứng dụng Nextjs của bạn và thực hiện theo hướng dẫn

$ npx create-next-app next-application

Bước 3: Xây dựng Dockerfile

$ vi Dockerfile
# Sử dụng Image Nodejs để dự án chạy trên nền Nodejs
FROM node:latest
# Chỉ định thư mục hoạt động của container
WORKDIR /usr/src/app
# Sao chép tệp package.json từ local vào trong container của Docker
COPY package*.json ./
# Cài đặt các thành phần phụ thuộc cho dự án
RUN yarn install
# Sao chép code của ứng dụng Nextjs từ Local vào container của Docker
COPY . .
# Build ứng dụng Next.js
RUN yarn build
# Chỉ định ứng dụng Nextjs sẽ chạy trên port 3000
EXPOSE 3000
# Khởi động ứng dụng Nextjs
CMD ["yarn", "dev"]

Bước 4: Tiến hành build file Dockerfile

$ docker build .
$ docker run 4cc010d9d657

Sau khi buil các bạn có thể kiểm tra logs của Container bằng cách mở Docker Desktop và truy cập http://localhost:3000 để xem dự án đã được build thành công chưa.

Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Liên hệ với tôi hoặc bất kỳ điều gì tương tự (★‿★)

Chỉ đơn giản là một người từ tế!

Kết nối với tôi

Copyright 2018- 2025 Chuis.me, All rights reserved