6.1 指令 docker config
Docker 提供內建機制來管理配置與機密資料,讓我們可以更安全方便地管理容器中的配置檔案和敏感數據。這些機制能幫助提升安全性,同時簡化分散式系統中的配置管理。在這堂課程中,我們會學習如何使用 docker config 和 docker secret 指令,並提供範例和最佳實踐。
配置工作的基礎
指令 docker config 可以管理配置檔案,這些檔案可以用於 Docker Swarm 的服務中。配置提供了一種方便的方式來傳遞應用程式的設置與參數。
docker config 的主要指令
docker config create— 創建新配置docker config ls— 列出所有配置-
docker config inspect— 獲取配置資訊 docker config rm— 刪除配置
使用 docker config 的範例
創建配置
要創建配置,可以使用指令 docker config create。以下舉例創建 Nginx 的配置檔案。
創建檔案 nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 80;
location / {
return 200 'Hello, World!';
add_header Content-Type text/plain;
}
}
}
在 Docker 中創建配置:
docker config create nginx_config ./nginx.conf
2. 列出所有配置
使用指令 docker config ls 可以查看所有創建的配置:
docker config ls
指令輸出結果:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 nginx_config 10 seconds ago 10 seconds ago
3. 在服務中使用配置
創建服務並使用剛才創建的配置:
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx
4. 刪除配置
使用指令 docker config rm 可以刪除配置:
docker config rm nginx_config
6.2 指令 docker secret
指令 docker secret 提供管理「機密」的功能,例如密碼、API 鍵與憑證,可以安全地被 Docker Swarm 的服務使用。機密以加密形式存儲,僅供使用該機密的服務存取。
docker secret 的主要指令
docker secret create— 創建新的機密docker secret ls— 查看所有機密列表docker secret inspect— 獲取機密的詳細資訊docker secret rm— 刪除機密
docker secret 的使用範例
1. 創建機密
使用指令 docker secret create 來創建機密。以下示例建立資料庫密碼的機密。
創建文件 db_password.txt:
我的秘密密碼
在 Docker 中創建機密:
docker secret create db_password ./db_password.txt
2. 查看所有機密列表
使用指令 docker secret ls 來檢視所有已創建的機密:
docker secret ls
指令的輸出:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 db_password 10 秒前 10 秒前
3. 在服務中使用機密
創建一個服務,並使用剛創建的機密:
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
4. 刪除機密
使用指令 docker secret rm 來刪除機密:
docker secret rm db_password
6.3 實際範例和最佳實踐
實際範例和最佳實踐
範例 1: 在 Web 應用中使用配置和機密
創建配置文件和機密
echo "user www-data;" > ./nginx.conf
echo "worker_processes auto;" >> ./nginx.conf
docker config create nginx_config ./nginx.conf
echo "mysecretpassword" > ./db_password.txt
docker secret create db_password ./db_password.txt
創建使用配置和機密的服務
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p
8080:80 nginx
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
範例 2: 更新配置
更新配置文件的內容
修改文件 nginx.conf:
user www-data;
worker_processes 4;
創建新版本的配置
docker config create nginx_config_v2 ./nginx.conf
使用新配置更新服務
docker service update --config-rm nginx_config --config-add
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
GO TO FULL VERSION