在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统。
 
我们将创建一个 Mysql Service ,将密码保存到secret 中。我们还会创建一个 WordPress service ,他将使用 secret 连接Mysql 。这个例子将展示如何使用secret避免在image中存放敏感信息,或者在命令行中直接传递敏感信息。
 
创建 secret
 
root@host03:~# openssl rand -base64 20 | docker secret create mysql_root_password -    #    直接生成随机字符串并创建secret
4pjwxd6sr9du56wi1zpicejoy
root@host03:~# docker secret inspect mysql_root_password
[
    {
        "ID": "4pjwxd6sr9du56wi1zpicejoy",
        "Version": {
            "Index": 17167
        },
        "CreatedAt": "2019-05-16T06:52:50.88254189Z",
        "UpdatedAt": "2019-05-16T06:52:50.88254189Z",
        "Spec": {
            "Name": "mysql_root_password",
            "Labels": {}
        }
    }
]
root@host03:~# openssl rand -base64 20 > password.txt    #    生成随机字符串保存到文件
root@host03:~# docker secret create mysql_root_password_file ./password.txt    #    从文件读取密码生成secret
m6rc31lat7wutlcmfxn88z8dy
root@host03:~# docker secret inspect mysql_root_password_file
[
    {
        "ID": "m6rc31lat7wutlcmfxn88z8dy",
        "Version": {
            "Index": 17168
        },
        "CreatedAt": "2019-05-16T06:54:19.792675996Z",
        "UpdatedAt": "2019-05-16T06:54:19.792675996Z",
        "Spec": {
            "Name": "mysql_root_password_file",
            "Labels": {}
        }
    }
]
root@host03:~# openssl rand -base64 20 | docker secret create mysql_password -    #    我们这里为WordPress创建一个非root的secret
v6a7aqck9okemsopzc870e6p4
root@host03:~# docker secret inspect mysql_password
[
    {
        "ID": "v6a7aqck9okemsopzc870e6p4",
        "Version": {
            "Index": 17169
        },
        "CreatedAt": "2019-05-16T06:57:15.399204873Z",
        "UpdatedAt": "2019-05-16T06:57:15.399204873Z",
        "Spec": {
            "Name": "mysql_password",
            "Labels": {}
        }
    }
]
 
root@host03:~# docker secret ls
ID                          NAME                       DRIVER              CREATED              UPDATED
v6a7aqck9okemsopzc870e6p4   mysql_password                                 About a minute ago   About a minute ago    
4pjwxd6sr9du56wi1zpicejoy   mysql_root_password                            5 minutes ago        5 minutes ago         
m6rc31lat7wutlcmfxn88z8dy   mysql_root_password_file                       4 minutes ago        4 minutes ago
 
 
创建自定义 overlay 网络
 
root@host03:~# docker network create --driver overlay mysql_private
ssi9vxai6fppn1xfydaoedjth
root@host03:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c31c660ab056        bridge              bridge              local
b5ff39d0ca1f        docker_gwbridge     bridge              local
e9f624212e28        host                host                local
sngp88bsqode        ingress             overlay             swarm
ssi9vxai6fpp        mysql_private       overlay             swarm
39b5e5857095        none                null                local
 
 
创建mysql service
 
root@host03:~# 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:5.7
image mysql:latest could not be accessed on a registry to record
its digest. Each node will access mysql:latest independently,
possibly leading to different nodes running different
versions of the image.
wtcc6kth07v7hmf528bfe1p1y
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged
 
root@host03:~# docker service ps mysql
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                 ERROR                           PORTS
p69wao0p573p        mysql.1             mysql:latest        host01              Running             Running about a minute ago                                    
 
 
创建 WordPress service
 
root@host03:~# docker service create --name wordpress --network mysql_private --publish 80: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
sl396197rt8jh52xwsrg7x2gv
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged
 
root@host03:~# docker service ps wordpress
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
bvlccd2fsho2        wordpress.1         wordpress:latest    host02              Running             Running 17 seconds ago                       
 
 
访问 WordPress页面 http://10.12.31.211
 
 
 
 
 

110、通过案例学习Secret (Swarm17)的更多相关文章

  1. 通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)

    在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统. 我们将创建一个 MySQL service,将密码保存到 secret 中.我们还会创建一个 Wo ...

  2. Storm入门2-单词计数案例学习

     [本篇文章主要是通过一个单词计数的案例学习,来加深对storm的基本概念的理解以及基本的开发流程和如何提交并运行一个拓扑] 单词计数拓扑WordCountTopology实现的基本功能就是不停地读入 ...

  3. angular的splitter案例学习

    angular的splitter案例学习,都有注释了,作为自己的备忘. <!DOCTYPE html> <html ng-app="APP"> <he ...

  4. 8.3 ContosoMVCWeb官方案例学习

    1. 分页案例学习 2. 排序搜索案例学习 3.使用Configuration.cs中的Seed方法 在数据库迁移过程中,使用update-database,会运行seed方法.seed方法能够将初始 ...

  5. 通过 Autostereograms 案例学习 OpenGL 和 OpenCL 的互操作性

    引言 在过去的十年里, GPU (图形处理单元)已经从特殊硬件(特供)转变成能够在数值计算领域开辟新篇章的高性能计算机设备. 很多算法能够使用拥有巨大的处理能力的GPU来快速运行和处理大数据量.即使在 ...

  6. GIS案例学习笔记-三维生成和可视化表达

    GIS案例学习笔记-三维生成和可视化表达 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:针对栅格或者矢量数值型数据,进行三维可视化表达 操作时间:15分钟 案 ...

  7. 获取字段唯一值工具- -ArcPy和Python案例学习笔记

    获取字段唯一值工具- -ArcPy和Python案例学习笔记   目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...

  8. 面图层拓扑检查和错误自动修改—ArcGIS案例学习笔记

    面图层拓扑检查和错误自动修改-ArcGIS案例学习笔记 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 数据源: gis_ex10\ex01\parcel.shp, ...

  9. 计算平面面积和斜面面积-ArcGIS案例学习笔记

    计算平面面积和斜面面积-ArcGIS案例学习笔记 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 数据:实验数据\Chp8\Ex5\demTif.tif 平面面积= ...

随机推荐

  1. npm转成别的下载地址的插件

    第一种方式 1. 查看当前计算机的下载地址 npm get registry 2. 修改为淘宝npm镜像 npm config set registry http://registry.npm.tao ...

  2. Less相关的用法以及Vue2.0 中如何使用Less

    (一)less的用法: (二)vue 2.0中如何使用less插件 1:vue先安装less插件 npm install less less-loader --save 2:修改webpack.bas ...

  3. Java-JVM 栈帧(Stack Frame)

    一.概述 栈帧位置 JVM 执行 Java 程序时需要装载各种数据到内存中,不同的数据存放在不同的内存区中(逻辑上),这些数据内存区称作运行时数据区(Run-Time Data Areas). 其中 ...

  4. 通过merge语句完成表数据同步

    此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:   merge into tb_sys_sqlscripe@branch b using tb_s ...

  5. leetcode-hard-array-454 4sum II-NO

    mycode   过不了...我也不知道为什么... class Solution(object): def fourSumCount(self, A, B, C, D): ""& ...

  6. GitHub-Microsoft:DotNet2

    ylbtech-GitHub-Microsoft:DotNet2 1.返回顶部 · SignService Code Signing service and Client for Authentico ...

  7. 使用谷歌提供的SwipeRefreshLayout下拉控件进行下拉刷新的实现数据的刷新

    package com.loaderman.swiperefreshdemo; import android.os.Bundle; import android.os.Handler; import ...

  8. Nginx OCSP

    #开启 vim  /path/to/path/conf/nginx.conf ..... events{ ...... 省略..... } http { ..... server{ listen 44 ...

  9. 七十:flask钩子函数之关于before_request的钩子函数

    在flask中钩子函数是使用特定的装饰器装饰的函数,用于在正常执行的代码中,插入一段自己想要执行的代码(hook) before_first_request:flask项目第一次部署后指向的钩子函数, ...

  10. Oracle数据库提高sql查询效率总结

    我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句 ...