Docker là gì?
16344

Docker là một nền tảng mã nguồn mở được sử dụng để phát triển, vận chuyển và chạy các ứng dụng. Nó cho phép bạn tách biệt ứng dụng của mình khỏi cơ sở hạ tầng để có thể nhanh chóng phân phối phần mềm. Dưới đây là những điểm chính để hiểu về Docker:

  1. Containerization (Ảo hóa container):

    • Docker sử dụng công nghệ container để đóng gói một ứng dụng và tất cả các phụ thuộc của nó vào một “container” ảo.
    • Mỗi container là một đơn vị phần mềm tiêu chuẩn hóa, chứa mọi thứ cần thiết để chạy ứng dụng: mã, runtime, công cụ hệ thống, thư viện và cài đặt.
  2. Nhẹ và hiệu quả:

    • Khác với máy ảo truyền thống, các container Docker chia sẻ kernel của hệ điều hành máy chủ, làm cho chúng nhẹ hơn và sử dụng tài nguyên hiệu quả hơn.
  3. Tính nhất quán:

    • Docker đảm bảo rằng ứng dụng sẽ chạy giống nhau trong mọi môi trường, từ máy phát triển đến máy chủ sản xuất.
  4. Các thành phần chính:

    • Docker Engine: Nền tảng chạy và quản lý các container.
    • Docker Image: Bản mẫu chỉ đọc chứa hướng dẫn để tạo container.
    • Docker Container: Phiên bản chạy của một image.
    • Dockerfile: File văn bản chứa các lệnh để xây dựng một Docker image.
    • Docker Hub: Kho lưu trữ công cộng cho Docker images.
  5. Lợi ích:

    • Triển khai nhanh chóng và dễ dàng
    • Tính di động cao
    • Quản lý phiên bản và thành phần hiệu quả
    • Tái sử dụng và chia sẻ
    • Cô lập và bảo mật
  6. Ứng dụng:

    • Phát triển và kiểm thử phần mềm
    • Triển khai ứng dụng microservices
    • Tự động hóa quy trình CI/CD
    • Mở rộng quy mô ứng dụng

Docker đã trở thành một công cụ quan trọng trong ngành công nghiệp phần mềm, giúp đơn giản hóa quá trình phát triển, triển khai và quản lý ứng dụng trong các môi trường khác nhau.

Hãy xem xét một ví dụ cụ thể về việc sử dụng Docker để containerize một ứng dụng web đơn giản bằng Python Flask. Chúng ta sẽ đi qua các bước từ việc tạo ứng dụng đến việc chạy nó trong một container Docker.

  1. Tạo ứng dụng Flask đơn giản:

Đầu tiên, tạo một thư mục cho dự án và tạo file app.py:

 from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Xin chào từ Docker container!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
 
  1. Tạo file requirements.txt:
Flask==2.0.1
  1. Tạo Dockerfile:
# Sử dụng image Python chính thức làm base image
FROM python:3.9-slim

# Đặt thư mục làm việc trong container
WORKDIR /app

# Sao chép file requirements.txt vào container
COPY requirements.txt .

# Cài đặt các dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Sao chép mã nguồn ứng dụng vào container
COPY . .

# Mở cổng 5000 để Flask app có thể truy cập được
EXPOSE 5000

# Chạy ứng dụng khi container được khởi động
CMD ["python", "app.py"]
  1. Build Docker image:

Mở terminal, di chuyển đến thư mục dự án và chạy lệnh:

docker build -t flask-hello-world .
  1. Chạy Docker container:

Sau khi build xong, chạy container với lệnh:

docker run -d -p 5000:5000 flask-hello-world

Bây giờ, bạn có thể truy cập ứng dụng tại http://localhost:5000 trên trình duyệt.

  1. Kiểm tra container đang chạy:
docker ps
  1. Dừng container:
docker stop <container_id>

Giải thích chi tiết:

  • Dockerfile định nghĩa cách xây dựng image:

    • FROM python:3.9-slim: Sử dụng image Python 3.9 nhẹ làm cơ sở.
    • WORKDIR /app: Đặt thư mục làm việc trong container.
    • COPY requirements.txt .: Sao chép file requirements vào container.
    • RUN pip install ...: Cài đặt các dependencies.
    • COPY . .: Sao chép toàn bộ mã nguồn vào container.
    • EXPOSE 5000: Khai báo cổng 5000 sẽ được sử dụng.
    • CMD ["python", "app.py"]: Xác định lệnh để chạy ứng dụng.
  • Lệnh docker build tạo một image từ Dockerfile.

  • Lệnh docker run tạo và chạy một container từ image:

    • -d: Chạy container ở chế độ detached (nền).
    • -p 5000:5000: Map cổng 5000 của máy host với cổng 5000 của container.

Ví dụ này minh họa cách Docker có thể được sử dụng để đóng gói một ứng dụng web đơn giản cùng với tất cả dependencies của nó, đảm bảo rằng nó có thể chạy một cách nhất quán trên bất kỳ môi trường nào có Docker.

Danh mục


  1. Khác
  2. ThreeJS
  3. Ubuntu/Linux
  4. HTML/CSS
  5. Git
  6. Amazon Web Services
  7. Javascript
  8. Docker
  9. Laravel

Bài viết liên quan


Dockerfile

Dockerfile

30.09.2024
Author: ADMIN
Dockerfile là một tập lệnh chứa các hướng dẫn để xây dựng một Docker image. Trong bài viết này sẽ trình bày các thành phần chính và cách sử dụng chúng. Giúp cho việc xây dựng image trở nên tối ưu và hiệu quả hơn.

Bài viết khác

Routing

Routing

01.08.2024
Author: ADMIN
Hướng dẫn chi tiết về Basic Routing trong Laravel, từ cách định nghĩa route, sử dụng middleware, route caching đến route naming giúp tối ưu hóa ứng dụng.
Blade Basics

Blade Basics

01.08.2024
Author: ADMIN
Khám phá Blade trong Laravel: từ if-else, loops, kế thừa layout đến include sub-views. Giúp code gọn gàng, dễ quản lý và bảo trì hơn!
9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

01.08.2024
Author: ADMIN
Khám phá 9 mẹo Blade giúp bạn viết code Laravel sạch, tối ưu và chuyên nghiệp hơn. Từ @forelse, @auth, @guest, đến format ngày, tối ưu SEO – tất cả trong một bài viết súc tích, dễ áp dụng!
Hiển thị giá trị trong Blade

Hiển thị giá trị trong Blade

01.08.2024
Author: ADMIN
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!