Redis - Lệnh khởi tạo
docker run -d \
--name redis-server \
--restart unless-stopped \
-p 6379:6379 \
-v /home/user/redis-data:/data \
--memory=2g \
--shm-size=128m \
redis:7.4 \
--appendonly yes \
--appendfsync everysec \
--requirepass 'SecureRedisPass123!'
Phiên bản kiểm tra sức khỏe
docker run -d \
--name redis-server \
--restart unless-stopped \
-p 6379:6379 \
-v /home/user/redis-data:/data \
--memory=2g \
--shm-size=128m \
--health-cmd="redis-cli -a 'SecureRedisPass123!' ping" \
--health-interval=15s \
--health-timeout=3s \
--health-retries=3 \
redis:7.4 \
--appendonly yes \
--appendfsync everysec \
--requirepass 'SecureRedisPass123!'
docker run: Khởi tạo một Docker container mới.--name redis-server: Đặt tên cho container làredis-server. Tên này giúp dễ dàng quản lý container sau này.-p 6379:6379:- Ánh xạ cổng 6379 của máy chủ đến cổng 6379 bên trong container.
- 6379 là cổng mặc định của Redis, cho phép truy cập dịch vụ Redis qua
localhost:6379. -v /home/user/redis-data:/data:- Mount thư mục
/home/user/redis-datacủa máy chủ vào thư mục/datatrong container. - Redis lưu các file持久化 vào
/data, dữ liệu sẽ được lưu trữ trên máy chủ ngay cả khi container bị xóa hoặc khởi động lại. -d: Chạy container ở chế độ nền (detached mode).--restart unless-stopped:- Cấu hình chính sách khởi động lại container. Container sẽ tự động khởi động lại nếu dừng đột ngột, nhưng không khởi động lại nếu được dừng thủ công.
--appendonly yes:- Bật chế độ AOF (Append Only File) để Redis ghi các thao tác viết vào file, đảm bảo dữ liệu được lưu trữ ngay lập tức.
--requirepass 'SecureRedisPass123!': Đặt mật khẩu cho Redis, yêu cầu client phải cung cấp mật khẩu để truy cập.
MongoDB - Lệnh khởi tạo
docker run --name db-mongo -p 27017:27017 -v /data/mongo-data:/data/db -e MONGO_INITDB_ROOT_USERNAME=superadmin -e MONGO_INITDB_ROOT_PASSWORD='MongoDBSecurePass2024' -d --restart unless-stopped mongo
docker run: Khởi tạo một Docker container mới.--name db-mongo: Đặt tên container làdb-mongođể quản lý dễ dàng.-p 27017:27017:- Ánh xạ cổng 27017 của máy chủ đến cổng 27017 trong container.
- 27017 là cổng mặc định của MongoDB, cho phép kết nối qua
localhost:27017. -v /data/mongo-data:/data/db:- Mount thư mục
/data/mongo-datacủa máy chủ vào thư mục/data/dbtrong container. /data/dblà thư mục lưu trữ dữ liệu mặc định của MongoDB, đảm bảo dữ liệu được lưu trữ lâu dài.-e MONGO_INITDB_ROOT_USERNAME=superadmin: Đặt tên người dùng admin làsuperadmin.-e MONGO_INITDB_ROOT_PASSWORD='MongoDBSecurePass2024':- Đặt mật khẩu cho người dùng admin là
MongoDBSecurePass2024. - Trong môi trường sản xuất, hãy sử dụng mật khẩu mạnh để tăng cường bảo mật.
-d: Chạy container ở chế độ nền.--restart unless-stopped: Thiết lập chính sách khởi động lại container.mongo: Sử dụng image MongoDB chính thức để tạo và khởi động container.
MySQL - Lệnh khởi tạo
docker run --name mysql-db -e MYSQL_ROOT_PASSWORD=MySqlSecurePass123 -d -p 3306:3306 -v /home/user/mysql-data:/var/lib/mysql --restart unless-stopped mysql:8.0
--name mysql-db: Đặt tên container làmysql-db.-e MYSQL_ROOT_PASSWORD=MySqlSecurePass123: Đặt mật khẩu người dùngrootcủa MySQL làMySqlSecurePass123.-d: Chạy container ở chế độ nền.-p 3306:3306: Ánh xạ cổng 3306 của máy chủ đến cổng 3306 của container.-v /home/user/mysql-data:/var/lib/mysql: Mount thư mục local/home/user/mysql-datavào/var/lib/mysqltrong container để đảm bảo dữ liệu được lưu trữ lâu dài.--restart unless-stopped:- Thiết lập chính sách khởi động lại container.
- Container sẽ tự động khởi động lại nếu dừng đột ngột, nhưng không khởi động lại nếu được dừng thủ công.
mysql:8.0: Sử dụng image MySQL phiên bản 8.0.
PostgreSQL - Lệnh khởi tạo
docker run -d \
--name postgres-db \
--restart unless-stopped \
-e POSTGRES_PASSWORD='PostgresSecurePass2024' \
-e TZ=Asia/Ho_Chi_Minh \
-p 5432:5432 \
-v /data/postgres-data:/var/lib/postgresql/data \
--shm-size=512m \
postgres:15.4
Phiên bản nâng cao
docker run -d \
--name postgres-prod \
--restart unless-stopped \
-e POSTGRES_PASSWORD='PostgresSecurePass2024' \
-e TZ=Asia/Ho_Chi_Minh \
-p 5432:5432 \
-v /data/postgres-data:/var/lib/postgresql/data \
--health-cmd="pg_isready -U postgres" \
--health-interval=30s \
--health-timeout=10s \
--health-retries=3 \
--shm-size=512m \
postgres:15.4
docker run: Khởi tạo một Docker container mới.--name postgres-db: Đặt tên container làpostgres-dbđể dễ dàng quản lý.--restart unless-stopped:- Thiết lập chính sách khởi động lại container.
- Container sẽ tự động khởi động lại nếu dừng đột ngột, nhưng không khởi động lại nếu được dừng thủ công.
-e POSTGRES_PASSWORD='PostgresSecurePass2024': Đặt mật khẩu cho người dùng postgres của PostgreSQL.-e TZ=Asia/Ho_Chi_Minh: Đặt múi giờ cho container là Asia/Ho_Chi_Minh.-p 5432:5432:- Ánh xạ cổng 5432 của máy chủ đến cổng 5432 của container.
- 5432 là cổng mặc định của PostgreSQL.
-v /data/postgres-data:/var/lib/postgresql/data:- Mount thư mục
/data/postgres-datacủa máy chủ vào/var/lib/postgresql/datatrong container. - Đây là thư mục lưu trữ dữ liệu mặc định của PostgreSQL, đảm bảo dữ liệu được lưu trữ lâu dài.
-d: Chạy container ở chế độ nền.--shm-size=512m: Đặt kích thước shared memory là 512MB.postgres:15.4: Sử dụng image PostgreSQL phiên bản 15.4.
"Phiên bản nâng cao" bổ sung
--health-cmd="pg_isready -U postgres": Định nghĩa lệnh kiểm tra sức khỏe, sử dụng công cụ pg_isready để kiểm tra kết nối đến người dùng postgres.--health-interval=30s: Kiểm tra sức khỏe mỗi 30 giây.--health-timeout=10s: Thời gian chờ tối đa cho mỗi lần kiểm tra là 10 giây.--health-retries=3: Sau 3 lần kiểm tra liên tiếp thất bại, container sẽ được đánh dấu là unhealthy.
Kiểm tra trạng thái sức khỏe: docker inspect postgres-db --format='{{.State.Health.Status}}'