docker secret管理敏感数据及普通服务配置项--高级篇

原创 2018年04月17日 14:21:02

        本文用一个WordPress服务与一个Mysql后端存储搭建一个博客系统,演示如何通过docker secret在WordPress与Mysql实例之间共享用户为Mysql设置的密码以及当Mysql密码改变后WordPress滚动升级。

参考地址:https://docs.docker.com/engine/swarm/secrets/

  • 利用WordPress与Mysql搭建简单的博客系统

1.为Mysql创建secret

        secret创建后其内容是不能更新的,只能删除掉旧的secret然后再重新创建,并且不能删除正在被使用的secret。如果secret需要变更的话,一般是在创建secret时加上版本号,变更的时候先创建一个新版本的secret,然后执行docker service update命令使服务使用新版本的secret,再释放掉旧版本的secret。

        执行如下命令创建两个secret,命令执行后的标准输出并不是secret的内容,而是secret的ID:

openssl rand -base64 20 | docker secret create mysql_password -
openssl rand -base64 20 | docker secret create mysql_root_password -

2.创建用户自定义的网络

        为WordPress与Mysql创建overlay网络专门用于两者之间的通信,创建的网络不需要具备连接外网的能力,连接在这个网络上的服务不会向外部暴露任何端口。执行如下指令:

docker network create -d overlay mysql_private

3.创建Mysql服务

docker service create \
     --name mysql \
     --replicas 1 \
     --network mysql_private \
     --mount type=volume,source=mydata,destination=/var/lib/mysql \
     --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

4.创建wordpress服务

docker service create \
     --name wordpress \
     --replicas 1 \
     --network mysql_private \
     --publish published=30000,target=80 \
     --mount type=volume,source=wpdata,destination=/var/www/html \
     --secret source=mysql_password,target=wp_db_password,mode=0400 \
     -e WORDPRESS_DB_USER="wordpress" \
     -e WORDPRESS_DB_PASSWORD_FILE="/run/secrets/wp_db_password" \
     -e WORDPRESS_DB_HOST="mysql:3306" \
     -e WORDPRESS_DB_NAME="wordpress" \
     wordpress:latest

5.在浏览器中访问192.168.56.103:30000

IP地址可以是集群中任何一个node的IP地址,如下图:


博客系统创建成功。

  • 滚动升级密码

        Mysql将用户名与密码维护在内部的一个表中,修改密码的话有两个条件。第一个是Mysql能同时读到旧的密码与新的密码,旧的密码用于登录,新的密码用于修改。第二个就是Mysql需要执行一条指令来完成修改密码的动作,这个指令是不会自动执行的。需要手动登录到Mysql容器上执行。为wordpress用户修改mysql密码,步骤如下:

1.生成新的secret,名称中加入了版本后v2

openssl rand -base64 20 | docker secret create mysql_password_v2 -

2.更新Mysql服务,使它能同时访问新旧两个版本的密码

docker service update \
     --secret-rm mysql_password mysql
docker service update \
     --secret-add source=mysql_password,target=old_mysql_password \
     --secret-add source=mysql_password_v2,target=mysql_password \
     mysql
此时Mysql服务能同时访问新旧两个版本的密码,这两个版本的密码以内存文件的形式分别挂在/run/secrets/old_mysql_password、/run/secrets/mysql_password两个目录之下.

3.在mydql容器中执行修改密码的指令

docker container exec <CONTAINER_ID> \
    bash -c 'mysqladmin --user=wordpress --password="$(< /run/secrets/old_mysql_password)" password "$(< /run/secrets/mysql_password)"'

4.更新wordpress服务,使新的密码生效

docker service update \
     --secret-rm mysql_password \
     --secret-add source=mysql_password_v2,target=wp_db_password,mode=0400 \
     wordpress

5.从Mysql回收旧密码并从系统中删除

docker service update \
     --secret-rm mysql_password \
     mysql
docker secret rm mysql_password
版权声明:本文为博主原创,未经本人许可,请勿转载 https://blog.csdn.net/dkfajsldfsdfsd/article/details/79969507

包装很好,里面是什么?

包装很好,里面是什么? 作者:Eric Gunnerson上个月,我们花了一些时间来学习如何找到与 C# 有关的东西。我收到一些询问,问及有关 C# 或 .NET 的 Web 站点,所以我决定在专栏里...
  • ghj1976
  • ghj1976
  • 2001-05-03 18:16:00
  • 1244

docker secret管理敏感数据及普通服务配置项--简单篇

特别提示:本文使用docker最新版本docker-18.04.0-CE,版本太旧可能不支持本文演示的功能。参考文档:https://docs.docker.com/engine/swarm/secr...
  • dkfajsldfsdfsd
  • dkfajsldfsdfsd
  • 2018-04-16 18:39:06
  • 30

循序渐进学Docker (完整书签扫描版)

  • 2017年11月30日 22:33
  • 33.43MB
  • 下载

Python 面向对象编程

  • 2013年05月20日 09:03
  • 611KB
  • 下载

微信企业号开发之-如何获取secret 序列号

1、用管理员的帐号登录后,选择【设置】-【权限管理】进入管理组设置界面,如下图 2、在左边点击【新建管理组】,新建一个管理组(这里必须新建一个管理组,因为系统管理组是无法获取权限的),如下图: ...
  • zhq426
  • zhq426
  • 2015-05-24 13:10:00
  • 8517

07-软件配置项管理报告

1  范  围 1.1  标  识 包含该文档所适用的软件标识号、标题和版本号。 1.2  系统概述 简述文档所适用的系统和软件的用途。应描述系统和软件的一般特性;概述系统开发、运行和维护的历...
  • zchl159
  • zchl159
  • 2017-04-18 16:06:37
  • 427

ALTERA FPGA/CPLD设计 高级篇(第2版)

  • 2016年04月21日 20:49
  • 45.02MB
  • 下载

《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置

在微服务架构中,Spring Cloud为基于JVM的云应用开发中的服务发现、负载均衡、断路器、智能路由、配置管理、控制总线等等操作提供了一种简单、快捷的开发方式。...
  • wsr2014
  • wsr2014
  • 2017-05-13 11:51:40
  • 379

docker筑基篇-00-docker简介

docker简介 docker组件 1 客户端和服务端 2 镜像 3 Registry 4 容器 docker的特点 和传统虚拟化技术的对比 1 docker简介docker是一个能够把开发的应用程序...
  • hylexus
  • hylexus
  • 2016-10-17 00:39:18
  • 573

ITIL 2011 服务管理与认证读书笔记——第六、七章【服务运营、持续服务改进】

一、服务运营 服务运营讲的是如何通过有效的工具、技术和既定的流程实施服务和运维管理,来为客户创造价值和收益。 为提高服务运营人员的工作效率和标准化日常操作,职能组织应采用和维护标准操作手册(Stand...
  • watermelonbig
  • watermelonbig
  • 2017-08-14 00:48:39
  • 586
收藏助手
不良信息举报
您举报文章:docker secret管理敏感数据及普通服务配置项--高级篇
举报原因:
原因补充:

(最多只允许输入30个字)