Khái Niệm Cơ Bản Về Docker
Để hiểu rõ quy trình vận hành, cần phân biệt hai khái niệm cốt lõi:
Docker Image: Là tập hợp các lớp (layers) chứa dữ liệu tĩnh dùng để đóng gói ứng dụng hoặc hệ điều hành.
Docker Container: Là phiên bản đang hoạt động của một hình ảnh, tương tự như một quá trình thực thi có tài nguyên cô lập.
Quản Lý Image và Dịch Vụ Khởi Đầu
Trước khi đưa vào sử dụng, tiến hành tải các thư viện cần thiết từ repository công cộng.
docker pull apache/zookeeper
docker pull wurstmeister/kafka
docker pull mysql
Sau khi tải xong, kiểm tra danh sách các hình ảnh đã lưu trữ trên máy chủ bằng lệnh:
docker images
Triển Khai Zookeeper Và Kafka
Tạo và khởi động các container cho dịch vụ ghi nhớ phân tán và hàng đợi tin nhắn.
Khởi động Zookeeper:
docker run -d \
--name zk-instance \
-p 2181:2181 \
apache/zookeeper:latest
Khởi động Kafka: Cấu hình biến môi trường kết nối tới Zookeeper ngay trong lệnh chạy.
docker run -d \
--name kafka-node \
-p 9092:9092 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=localhost:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.1:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
wurstmeister/kafka:latest
Kiểm Tra Tính Năng Vận Chuyển Tin Tức
Thương mại hóa thông qua giao diện dòng lệnh bên trong container.
1. Truy cập môi trường shell của container Kafka:
docker exec -it kafka-node /bin/bash
2. Thiết lập luồng tạo chủ đề và gửi dữ liệu mẫu:
./kafka-console-producer.sh --broker-list localhost:9092 --topic news_stream
{"id": "uuid-001", "payload": {"source": "monitor"}}
Ctrl+D
3. Xác nhận dữ liệu nhận được qua trình tiêu thụ:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic news_stream --from-beginning
Đối với Zookeeper, dữ liệu lịch sử có thể xem qua phần cấu trúc nhánh trực tiếp.
Cấu Hình Chi Tiết Cho MySQL
Bắt đầu với việc chuẩn bị môi trường lưu trữ quan hệ đối tượng.
Tải và Kích Hoạt: Sử dụng cổng 3306 để giao tiếp ngoại vi, đảm bảo mật khẩu root mạnh.
docker run --name db-primary \
-e MYSQL_ROOT_PASSWORD=SecureDB_Pass#2024 \
-p 3306:3306 \
-d mysql:latest
Trạng thái hoạt động hiện tại có thể kiểm tra qua bảng tổng hợp:
docker ps
Liên Kết Nội Bộ: Để quản lý database từ bên trong mạng lưới.
docker exec -it db-primary /bin/bash
Mở Rộng Dịch Vụ Đơn Giản: Có thể chạy nhiều instance cơ sở dữ liệu song song trên cùng một host bằng cách thay đổi ánh xạ cổng.
docker run --name db-secondary \
-e MYSQL_ROOT_PASSWORD=SecureDB_Pass#2024 \
-p 3308:3306 \
-d mysql:latest
Lúc này, các công cụ GUI như Navicat sẽ trỏ đến cổng 3308.
Cập Nhật Thông Số Cấu Hình: Thay vì sửa file mặc định bên trong container, phương pháp tối ưu là gắn (mount) tệp tin cấu hình từ host.
docker run --name db-configured \
-v /opt/mysql-config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=NewPass \
-d mysql:tag
Trong đó, đường dẫn `/opt/mysql-config` trên máy chủ bao gồm file tùy chỉnh `.cnf` sẽ ưu tiên hơn cài đặt gốc của hình ảnh MySQL.
Vòng Đời Quản Lý
Điều khiển trạng thái các tiến trình ảo hóa.
- Xem Tất Cả (Có/Tắt): `docker ps -a`
- Tiếp Tục Chạy: `docker start db-primary`
- Dừng Hoạt Động: `docker stop db-primary`