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