CodeGym /Adesua ahorow /Docker SELF /使用配置和秘密

使用配置和秘密

Docker SELF
等級 20 , 課堂 0
開放

6.1 指令 docker config

Docker 提供內建機制來管理配置與機密資料,讓我們可以更安全方便地管理容器中的配置檔案和敏感數據。這些機制能幫助提升安全性,同時簡化分散式系統中的配置管理。在這堂課程中,我們會學習如何使用 docker configdocker secret 指令,並提供範例和最佳實踐。

配置工作的基礎

指令 docker config 可以管理配置檔案,這些檔案可以用於 Docker Swarm 的服務中。配置提供了一種方便的方式來傳遞應用程式的設置與參數。

docker config 的主要指令

  1. docker config create — 創建新配置
  2. docker config ls — 列出所有配置
  3. docker config inspect — 獲取配置資訊
  4. docker config rm — 刪除配置

使用 docker config 的範例

創建配置

要創建配置,可以使用指令 docker config create。以下舉例創建 Nginx 的配置檔案。

創建檔案 nginx.conf

nginx

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 中創建配置:

Terminal

docker config create nginx_config ./nginx.conf

2. 列出所有配置

使用指令 docker config ls 可以查看所有創建的配置:

Terminal

docker config ls

指令輸出結果:

Terminal

ID                                                                                       NAME           CREATED             UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   nginx_config    10 seconds ago     10 seconds ago

3. 在服務中使用配置

創建服務並使用剛才創建的配置:

Terminal

docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx

4. 刪除配置

使用指令 docker config rm 可以刪除配置:

Terminal

docker config rm nginx_config

6.2 指令 docker secret

指令 docker secret 提供管理「機密」的功能,例如密碼、API 鍵與憑證,可以安全地被 Docker Swarm 的服務使用。機密以加密形式存儲,僅供使用該機密的服務存取。

docker secret 的主要指令

  1. docker secret create — 創建新的機密
  2. docker secret ls — 查看所有機密列表
  3. docker secret inspect — 獲取機密的詳細資訊
  4. docker secret rm — 刪除機密

docker secret 的使用範例

1. 創建機密

使用指令 docker secret create 來創建機密。以下示例建立資料庫密碼的機密。

創建文件 db_password.txt

Text

我的秘密密碼

在 Docker 中創建機密:

Terminal

docker secret create db_password ./db_password.txt

2. 查看所有機密列表

使用指令 docker secret ls 來檢視所有已創建的機密:

Terminal

docker secret ls

指令的輸出:

Terminal

ID                                                                                    NAME           CREATED             UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8   db_password    10 秒前             10 秒前

3. 在服務中使用機密

創建一個服務,並使用剛創建的機密:

Terminal

docker service create --name postgres --secret db_password -e 
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres

4. 刪除機密

使用指令 docker secret rm 來刪除機密:

Terminal

docker secret rm db_password

6.3 實際範例和最佳實踐

實際範例和最佳實踐

範例 1: 在 Web 應用中使用配置和機密

創建配置文件和機密

Terminal

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

創建使用配置和機密的服務

Terminal

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:

nginx

user www-data;
worker_processes 4;

創建新版本的配置

Terminal

docker config create nginx_config_v2 ./nginx.conf

使用新配置更新服務

Terminal

docker service update --config-rm nginx_config --config-add 
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION