1. 程式人生 > >Secret 的使用場景 - 每天5分鐘玩轉 Docker 容器技術(109)

Secret 的使用場景 - 每天5分鐘玩轉 Docker 容器技術(109)

docker容器教程swarm

我們可以用 secret 管理任何敏感數據。這些敏感數據是容器在運行時需要的,同時我們不又想將這些數據保存到鏡像中。

secret 可用於管理:

  1. 用戶名和密碼。

  2. TLS 證書。

  3. SSH 秘鑰。

  4. 其他小於 500 KB 的數據。

secret 只能在 swarm service 中使用。普通容器想使用 secret,可以將其包裝成副本數為 1 的 service。

這裏我們再舉一個使用 secret 的典型場景。

數據中心有三套 swarm 環境,分別用於開發、測試和生產。對於同一個應用,在不同的環境中使用不同的用戶名密碼。我們可以在三個環境中分別創建 secret,不過使用相同的名字,比如 username

password。應用部署時只需要指定 secret 名字,這樣我們就可以用同一套腳本在不同的環境中部署應用了。

除了敏感數據,secret 當然也可以用於非敏感數據,比如配置文件。不過目前新版本的 Docker 提供了 config 子命令來管理不需要加密的數據。config 與 secret 命令的使用方法完全一致。

Secret 的安全性

當在 swarm 中創建 secret 時,Docker 通過 TLS 連接將加密後的 secret 發送給所以的 manager 節點。

secret 創建後,即使是 swarm manager 也無法查看 secret 的明文數據,只能通過 docker secret inspect

查看 secret 的一般信息。

技術分享圖片

只有當 secret 被指定的 service 使用是,Docker 才會將解密後的 secret 以文件的形式 mount 到容器中,默認的路徑為/run/secrets/<secret_name>。例如在前面 MySQL 的例子中,我們可以在容器中查看 secret。

技術分享圖片

當容器停止運行,Docker 會 unmount secret,並從節點上清除。

下一節我們再通過一個更加綜合例子加深對 Secret 的理解。

技術分享圖片書籍:

1.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《每天5分鐘玩轉OpenStack》


https://item.jd.com/12086376.html

技術分享圖片


Secret 的使用場景 - 每天5分鐘玩轉 Docker 容器技術(109)