Chào các bạn! Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách tạo một hệ thống đơn giản gồm một container MySQL và một container Adminer để quản lý cơ sở dữ liệu, sử dụng Docker và Docker Compose. Bài viết này sẽ giúp bạn nắm được khái niệm cơ bản về Docker network, volume, và sự khác nhau giữa cách chạy thủ công và dùng Docker Compose.
1. Giới thiệu hệ thống
Hệ thống của chúng ta sẽ bao gồm:
- MySQL: là cơ sở dữ liệu, nơi lưu trữ dữ liệu.
- Adminer: là giao diện web giúp bạn dễ dàng truy cập và quản lý MySQL.
Mục tiêu là kết nối hai container này lại với nhau thông qua cùng một mạng Docker, để Adminer có thể truy cập MySQL bằng tên DNS.
2. Tạo thủ công bằng Docker CLI
Bước 1: Tạo network và volume
docker network create web
docker volume create web-data
docker volume create adminer-data
Bước 2: Chạy MySQL container
docker run -d \
--name mysql-container \
--network web \
-v web-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=admin123 \
mysql
Bước 3: Chạy Adminer container
docker run -d \
--name adminer-container \
--network web \
-p 8080:8080 \
adminer
Giờ bạn có thể truy cập http://localhost:8080 để mở giao diện Adminer.
Đăng nhập bằng:
- Server:
mysql-container - Username:
root - Password:
admin123
Bước 4: Kiểm tra kết nối
Bạn có thể tạo thử một database trên Adminer để xác nhận mọi thứ hoạt động đúng. Sau đó dùng dòng lệnh truy cập vào container MySQL để xác minh:
docker exec -it mysql-container bash
mysql -u root -p
# nhập mật khẩu admin123
SHOW DATABASES;
3. Chuyển sang Docker Compose
Docker Compose giúp bạn gom toàn bộ cấu hình thành một file duy nhất, tiện lợi hơn khi triển khai. Dưới đây là file docker-compose.yaml tương đương với những gì chúng ta đã làm ở trên:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql-container
volumes:
- web-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin123
networks:
- my-network
adminer:
image: adminer
container_name: adminer-container
ports:
- "8080:8080"
networks:
- my-network
volumes:
web-data:
networks:
my-network:
driver: bridge
Chạy bằng Docker Compose:
docker compose up -d
Sau khi chạy xong, bạn sẽ thấy Docker tự tạo network và volume cần thiết.
Cách xoá sau khi chạy Docker Compose
| Mục đích | Lệnh |
|---|---|
| Chỉ dừng và xoá container, network | docker compose down |
| Xoá cả volume | docker compose down --volumes |
| Xoá cả image và volume | docker compose down --rmi all --volumes |
4. Lưu ý khi dùng Docker Compose
- Docker sẽ tự tạo network tên theo thư mục chứa file Compose. Ví dụ: nếu thư mục tên là
project, network mặc định sẽ làproject_default. - Volume cũng sẽ được đặt tên dạng
project_web-data.
Bạn có thể kiểm tra:
docker network ls
docker volume ls