通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)
2017-12-25 07:42
831 查看
在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统。我们将创建一个 MySQL service,将密码保存到 secret 中。我们还会创建一个 WordPress service,它将使用 secret 连接 MySQL。这个例子将展示如何用 secret 避免在 image 中存放敏感信息,或者在命令行中直接传递敏感数据。实验步骤如下:[b]创建 secret[/b]创建 secret 存放 MySQL 的管理员密码。
注意
[b]创建自定义的 overlay 网络[/b]MySQL 通过 overlay 网络
[b]创建 WordPress service[/b]MySQL service 已就绪,现在创建 WordPress service。命令如下:
[b]验证 WordPress[/b]访问 http://[swarm_master_ip]:30000/
能正常显示初始化界面,表明 WordPress 已经连接到 MySQL,部署成功。Secret 就讨论到这里,下一节我们学习 Stack。
书籍:1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
openssl rand -base64 20 | docker secret create mysql_root_password -密码是由 openssl 生成的随机字符串。
注意
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 -
[b]创建自定义的 overlay 网络[/b]MySQL 通过 overlay 网络
mysql_private与 WordPress 通信,不需要将 MySQL service 暴露给外部网络和其他容器。
docker network create -d overlay mysql_private[b]创建 MySQL service[/b]命令如下:
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/
[b]创建 WordPress service[/b]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/
[b]验证 WordPress[/b]访问 http://[swarm_master_ip]:30000/
能正常显示初始化界面,表明 WordPress 已经连接到 MySQL,部署成功。Secret 就讨论到这里,下一节我们学习 Stack。
书籍:1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
相关文章推荐
- 通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)
- 通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)
- 通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- Secret 的使用场景 - 每天5分钟玩转 Docker 容器技术(109)
- Secret 的使用场景 - 每天5分钟玩转 Docker 容器技术(109)
- Secret 的使用场景 - 每天5分钟玩转 Docker 容器技术(109)