1.secret management 的作用
用來存儲 其他人不想看到 的資料
2.secret management
存在 swarm manager 節點 raft database 裡。
secret 可以 assign 給一個 service (or container), 這個 sevice 就能看到這個secret了
在 container 内部 secret 看起來像檔案, 但實際是在記憶體中
3. secret 的 操作
建立
從檔案内建立
vim password
#password 内容
123456a
建立 secret
docker secret create my-pass password

删除 password 檔案
rm -rf ./password
從指令行輸入建立
echo '123456a' | docker secret create my-pass2 -
檢視
docker secret ls
删除
docker secret rm my-pass2
4. secret 的使用
建立 service 的時候指定 secret
docker service create --name client --secret my-pass busybox sh -c "while true; do sleep 3600; done"
檢視 service 伺服器 位置
docker service ps client
在 指定伺服器 檢視 container id
docker ps
進入容器
docker exec -it [container_id] sh
檢視指定的密碼
cat /run/secrets/my-pass
5. mysql 案例
建立 mysql service 指定檔案根目錄 密碼檔案為 /run/secrets/my-pass
docker service create --name db --secret my-pass -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my-pass mysql:5.7.27
檢視所在伺服器位置
docker service ps db
在 指定伺服器 檢視容器id 并進入
docker ps
docker exec -it [container_id] sh
檢視docker secret 密碼 并 進入mysql
cat /run/secrets/my-pass
mysql -uroot -p[my-pass]
或簡寫為:
mysql -uroot -p$(cat /run/secrets/my-pass)
6. 在 docker stack 中的使用
編輯 docker-compose.yml
在各個 service 下添加
secrets 參數 和 environment 參數
eg:
services:
web:
image: wordpress
secrets:
- my-pass
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD_FILE: /run/secrets/my-pass
...
eg: docker-compose.yml
version: '3.1'
services:
db:
image: mysql:5.7.27
volumes:
- db_data:/var/lib/mysql
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:
depends_on:
- db
image: wordpress:latest
ports:
- "8888: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: password.txt
db_root_password:
file: password.txt
volumes:
db_data:
6. 根據上述的 docker-compose.yml 建立 service
docker stack deploy wordpress -c=docker-compose.yml
檢視 mysql 所在的伺服器
docker service ls
docker service [container_name | container id]
檢視所在伺服器的 容器 id
docker ps
進入 mysql 容器
docker exec -it [container_id] /bin/bash
mysql -uroot -p[your setting password]
能登陸即可
或能通路 192.168.205.10 也行
轉載于:https://www.cnblogs.com/zonehoo/p/11419823.html