1. Khái niệm Docker Secrets
- Docker Secrets: Giải pháp quản lý thông tin nhạy cảm (mật khẩu, API keys, SSH keys, SSL certificates) an toàn trong cụm Docker Swarm.
- Dữ liệu secret được mã hóa khi truyền tải và lưu trữ trong bộ nhớ tạm (in-memory tmpfs) của container, không ghi xuống đĩa cứng.
2. Các phương pháp quản lý Secrets cơ bản
openssl rand -base64 20 | docker secret create my_secret_data -
2.2. Tạo Secret từ Tệp tin
openssl rand -base64 20 > secret.txt
docker secret create my_secret_data2 secret.txt
2.3. Liệt kê danh sách Secrets
docker secret ls
2.4. Xem chi tiết cấu hình Secret
docker secret inspect my_secret_data
2.5. Xóa Secret
docker secret rm my_secret_data2
3. Gắn Secret vào Dịch vụ Docker Swarm
3.1. Khởi chạy Service sử dụng Secret
docker service create --name redis --secret my_secret_data redis:alpine
3.2. Kiểm tra nội dung Secret bên trong Container
docker container exec $(docker ps --filter name=redis -q) cat /run/secrets/my_secret_data
4. Ứng dụng thực tế: Triển khai WordPress + MySQL với Secrets
4.1. Tạo các Secret Key mật khẩu
openssl rand -base64 20 > db_password.txt
openssl rand -base64 20 > db_root_password.txt
4.2. Định nghĩa cấu hình docker-compose.yml (Version 3.1)
version: "3.1"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
networks:
mysql_internal:
aliases:
- db
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_root_password
- db_password
wordpress:
image: wordpress:latest
depends_on:
- db
networks:
mysql_internal:
aliases:
- wordpress
wordpress_public:
ports:
- "8001:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_password
secrets:
db_password:
file: db_password.txt
db_root_password:
file: db_root_password.txt
volumes:
db_data:
networks:
mysql_internal:
driver: overlay
internal: true
wordpress_public:
driver: overlay
5. Triển khai & Kiểm thử Stack
docker stack deploy --compose-file docker-compose.yml wp
5.1. Kiểm tra trạng thái triển khai
docker secret ls
docker stack ls
docker service ls
5.2. Truy cập ứng dụng WordPress
- Mở trình duyệt tại địa chỉ:
http://<IP-MANAGER>:8001
- Hoàn tất các bước thiết lập tài khoản quản trị WordPress.
6. Tổng kết các lệnh thao tác Secret quan trọng
| Mục đích | Câu lệnh |
|---|
| Tạo Secret từ STDIN | openssl rand -base64 20 | docker secret create <name> - |
| Tạo Secret từ tệp | docker secret create <name> <file> |
| Liệt kê Secrets | docker secret ls |
| Gắn Secret vào Service | docker service create --secret <name> ... |
| Kiểm tra thông tin Secret | docker secret inspect <name> |
| Xóa Secret | docker secret rm <name> |
| Deploy Stack chứa Secrets | docker stack deploy -c docker-compose.yml <stack_name> |
| Xóa Stack (tự xóa Secrets) | docker stack rm <stack_name> |