Hướng dẫn入门 Docker Compose
Xin chào các bạnfuture Docker maestros! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình khám phá thế giới Docker Compose. Là một người đã dạy khoa học máy tính trong nhiều năm, tôi đã chứng kiến nhiều sinh viên gặp khó khăn với các khái niệm về việc containerization. Nhưng đừng lo lắng! Cuối bài hướng dẫn này, bạn sẽ điều hành các container như một chuyên gia.
Docker Compose là gì?
Trước khi chúng ta đi sâu vào, hãy bắt đầu từ những điều cơ bản. Hãy tưởng tượng bạn đang lên kế hoạch cho một bữa tiệc lớn (vì ai lại không thích một ví dụ tốt?). Bạn cần phối hợp đồ ăn, đồ uống, âm nhạc và trang trí. Docker Compose giống như công cụ lên kế hoạch tiệc của bạn, nhưng cho các container!
Trong thuật ngữ kỹ thuật, Docker Compose là một công cụ để xác định và chạy các ứng dụng Docker đa container. Nó cho phép bạn sử dụng một tệp YAML để cấu hình các dịch vụ, mạng và thể tích của ứng dụng, sau đó tạo và khởi động tất cả các dịch vụ từ cấu hình của bạn với một lệnh duy nhất.
Cài đặt Docker Compose
Bây giờ, hãy cài đặt Docker Compose trên hệ thống của bạn. Quá trình này dễ dàng như ăn bánh (mmm... bánh).
Đối với người dùng Windows và Mac
Nếu bạn đã cài đặt Docker Desktop, chúc mừng! Bạn đã có Docker Compose. Nó đi kèm với quá trình cài đặt. Bạn có thể chuyển sang phần tiếp theo và nhảy một điệu nhảy vui vẻ.
Đối với người dùng Linux
Đối với bạn bè Linux, bạn sẽ cần cài đặt Docker Compose riêng biệt. Dưới đây là cách:
- Tải xuống bản phát hành ổn định hiện tại của Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Áp dụng quyền thực thi cho tệp nhị phân:
sudo chmod +x /usr/local/bin/docker-compose
- Xác minh cài đặt:
docker-compose --version
Nếu bạn thấy số phiên bản, bạn đã sẵn sàng!
Tạo tệp Docker-Compose đầu tiên
Bây giờ chúng ta đã cài đặt Docker Compose, hãy tạo tệp docker-compose.yml đầu tiên. Tệp này giống như công thức cho ứng dụng của bạn - nó告诉 Docker cần những nguyên liệu (dịch vụ) nào và cách chế biến chúng.
Hãy tạo một ứng dụng web đơn giản sử dụng Python Flask và Redis. Đừng lo lắng nếu bạn không quen thuộc với các công nghệ này - chúng ta sẽ giữ nó đơn giản!
Tạo một thư mục mới cho dự án của bạn và di chuyển vào đó:
mkdir my_first_compose_project
cd my_first_compose_project
Bây giờ, hãy tạo tệp docker-compose.yml của chúng ta:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
Hãy phân tích điều này:
-
version: '3'
: Đây chỉ định phiên bản của định dạng tệp Docker Compose mà chúng ta đang sử dụng. -
services
: Phần này xác định các container mà chúng ta muốn chạy. -
web
: Đây là dịch vụ ứng dụng Flask của chúng ta. -
build: .
: Điều này告诉 Docker xây dựng một hình ảnh từ một tệp Dockerfile trong thư mục hiện tại. -
ports: - "5000:5000"
: Điều này ánh xạ cổng 5000 trên máy chủ đến cổng 5000 trong container. -
redis
: Đây là dịch vụ Redis của chúng ta. -
image: "redis:alpine"
: Điều này告诉 Docker sử dụng hình ảnh chính thức của Redis từ Docker Hub.
Tạo ứng dụng Flask
Bây giờ, hãy tạo một ứng dụng Flask đơn giản. Tạo một tệp có tên app.py
:
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return f'Hello World! I have been seen {redis.get("hits").decode("utf-8")} times.'
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Ứng dụng đơn giản này tăng một bộ đếm trong Redis mỗi lần trang được truy cập.
Tạo Dockerfile
Tiếp theo, chúng ta cần tạo một Dockerfile để xây dựng ứng dụng Flask của mình. Tạo một tệp có tên Dockerfile
:
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
Dockerfile này:
- Bắt đầu từ hình ảnh Python 3.7 Alpine
- Đặt thư mục làm việc là
/code
- Đặt các biến môi trường cho Flask
- Cài đặt các phụ thuộc cần thiết
- Sao chép và cài đặt các yêu cầu Python
- Mở cổng 5000
- Sao chép thư mục hiện tại vào container
- Đặt lệnh để chạy Flask
Tạo tệp Yêu cầu
Cuối cùng, chúng ta cần xác định các phụ thuộc Python. Tạo một tệp có tên requirements.txt
:
flask
redis
Chạy ứng dụng Docker Compose
Bây giờ đến phần thú vị - chạy ứng dụng của bạn! Trong terminal, chạy:
docker-compose up
Bạn nên thấy Docker Compose xây dựng các hình ảnh và khởi động các dịch vụ. Khi xong, mở trình duyệt và truy cập http://localhost:5000
. Bạn nên thấy thông báo "Hello World" và bộ đếm sẽ tăng mỗi lần bạn làm mới trang.
Lệnh Docker Compose
Dưới đây là bảng các lệnh Docker Compose phổ biến:
Lệnh | Mô tả |
---|---|
docker-compose up |
Tạo và khởi động các container |
docker-compose down |
Dừng và xóa các container, mạng, hình ảnh và thể tích |
docker-compose ps |
Liệt kê các container |
docker-compose logs |
Xem đầu ra từ các container |
docker-compose build |
Xây dựng hoặc xây dựng lại các dịch vụ |
docker-compose start |
Khởi động các dịch vụ |
docker-compose stop |
Dừng các dịch vụ |
Kết luận
Chúc mừng! Bạn vừa tạo và chạy ứng dụng đa container đầu tiên của mình bằng Docker Compose. Chúng ta chỉ mới chạm vào bề mặt của những gì Docker Compose có thể làm, nhưng tôi hy vọng hướng dẫn này đã cung cấp cho bạn một nền tảng vững chắc để phát triển.
Nhớ rằng, học Docker và containerization giống như học nấu ăn - nó đòi hỏi sự thực hành, nhưng một khi bạn nắm vững, bạn sẽ dễ dàng tạo ra các công thức phức tạp, đa container trong nháy mắt!
Chúc may mắn, các đầu bếp Docker tương lai!
Credits: Image by storyset