通过案例学习 Secret

来源:互联网 发布:刀塔传奇大师网络异常 编辑:程序博客网 时间:2024/06/07 09:08

在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统。

我们将创建一个 MySQL service,将密码保存到 secret 中。我们还会创建一个 WordPress service,它将使用 secret 连接 MySQL。这个例子将展示如何用 secret 避免在 image 中存放敏感信息,或者在命令行中直接传递敏感数据。

实验步骤如下:

创建 secret

创建 secret 存放 MySQL 的管理员密码。

 

openssl rand -base64 20 | docker secret create mysql_root_password -

 

 

密码是由 openssl 生成的随机字符串。

557.png

注意 ag7injh6juonwl09lq8st36o8 是新创建的 service 的 ID,而非 service 的内容。

上面这种方式是从标准输入读取 secret 的内容,也可以指定从文件中读取,例如:

 

openssl rand -base64 20 > password.txtdocker secret create my_password ./password.txt

 

 

一般情况下,应用不会直接用 root 密码访问 MySQL。我们会创建一个单独的用户 workpress,密码存放到 secret mysql_password中。

 

openssl rand -base64 20 | docker secret create mysql_password -

 

 

558.png
 
创建自定义的 overlay 网络

MySQL 通过 overlay 网络 mysql_private 与 WordPress 通信,不需要将 MySQL service 暴露给外部网络和其他容器。

 

docker network create -d overlay mysql_private

 

 

创建 MySQL service

命令如下:

 

docker service create \     --name mysql \     --network mysql_private \     --secret source=mysql_root_password,target=mysql_root_password \     --secret source=mysql_password,target=mysql_password \     -e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" \     -e MYSQL_PASSWORD_FILE="/run/secrets/mysql_password" \     -e MYSQL_USER="wordpress" \     -e MYSQL_DATABASE="wordpress" \     mysql:latest

 

 

MYSQL_DATABASE 指明创建数据库 wordpress

MYSQL_USER  MYSQL_PASSWORD_FILE 指明创建数据库用户 workpress,密码从 secret mysql_password 中读取。

有关 mysql 镜像环境变量更详细的使用方法可参考 https://hub.docker.com/_/mysql/

559.png
 
创建 WordPress service

MySQL service 已就绪,现在创建 WordPress service。命令如下:

 

docker service create \     --name wordpress \     --network mysql_private \     --publish 30000:80 \     --secret source=mysql_password,target=wp_db_password \     -e WORDPRESS_DB_HOST="mysql:3306" \     -e WORDPRESS_DB_NAME="wordpress" \     -e WORDPRESS_DB_USER="wordpress" \     -e WORDPRESS_DB_PASSWORD_FILE="/run/secrets/wp_db_password" \     wordpress:latest

 

 

WORDPRESS_DB_HOST 指明 MySQL service 地址 mysql:3306,这里用到了 DNS。

WORDPRESS_DB_NAME 指明 WordPress 的数据库为 wordpress,与前面 MYSQL_DATABASE 一致。

WORDPRESS_DB_USER 指明连接 WordPress 数据库的用户为 wordpress,与前面 MYSQL_USER 一致。

WORDPRESS_DB_PASSWORD_FILE 指明数据库的用户 wordpress 的密码,从 secret mysql_password 中获取。

有关 wordpress 镜像环境变量更详细的使用方法可参考 https://hub.docker.com/_/wordpress/

560.png
 


验证 WordPress

访问 http://[swarm_master_ip]:30000/

561.png

能正常显示初始化界面,表明 WordPress 已经连接到 MySQL,部署成功。

Secret 就讨论到这里,下一节我们学习 Stack。

书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁宝宝爱玩手机怎么办 微信举报封号了怎么办 建行u盾密码忘了怎么办 快递邮编写错了怎么办 欠钱被告到法院怎么办 高三基础差应该怎么办 放环一周同房了怎么办 鱼缸水黄但很清怎么办 qq语聊大厅被禁怎么办 单招没有被录取怎么办 思维有问题的人怎么办 从侧面看脸太平怎么办 怀孕2月有寄生虫怎么办 找网站被劫持了怎么办 苹果7喇叭有杂音怎么办 安卓手机被劫持怎么办 宠物猫吃了线怎么办 头一跳一跳的疼怎么办 头一下一下跳痛怎么办 腿抽筋了一直疼怎么办 头顶疼恶心想吐怎么办 孩子反应慢接受能力差怎么办 意志消沉的人该怎么办 婴儿脑袋睡偏了怎么办 感冒头神经跳痛怎么办 头一跳一跳的痛怎么办 头的神经跳着疼怎么办 宝宝脑袋睡偏了怎么办 小孩脑袋睡偏了怎么办 孩子脑袋睡偏了怎么办 右边头神经跳痛怎么办 脑袋神经疼怎么办想吐 上古卷轴5被强x怎么办 苹果6s出现闪退怎么办 苹果6s软件闪退怎么办 苹果6s总是闪退怎么办 苹果6sqq闪退怎么办 苹果6s经常闪退怎么办 苹果4s手机闪退怎么办 安卓软件闪退怎么办 25岁什么都不会怎么办