在下面的例子中,我们会部署一个 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. Nginx事件管理之epoll模块

    1. epoll 原理 假设有 100 万用户同时与一个进程保持着 TCP 连接,而每一时刻只有几十个或几百个 TCP 连接时活跃的(接收到 TCP 包),也就是说,在每一时刻,进程只需要处理这 10 ...

  2. Druid连接池(无框架)

    关于连接池有不少技术可以用,例如c3p0,druid等等,因为druid有监控平台,性能在同类产品中算top0的.所以我采用的事druid连接池. 首先熟悉一个技术,我们要搞明白,为什么要用他, 他能 ...

  3. Java爬虫爬取京东商品信息

    以下内容转载于<https://www.cnblogs.com/zhuangbiing/p/9194994.html>,在此仅供学习借鉴只用. Maven地址 <dependency ...

  4. Redis ==> 集群的三种模式

    一.主从同步/复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据. 但是由于数据是存储在一台服务器 ...

  5. 阿里巴巴 fastjson-1.2.12.jar json解析异常java.lang.ClassFormatError: Invalid method Code length 66865 in class file com/alibaba/fastjson/serializer/ASMSerializer_6_UserKdlb

    承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:1 ...

  6. JavaScript基础入门06

    目录 JavaScript 基础入门06 Math 对象 Math对象的静态属性 Math对象的静态方法 指定范围的随机数 返回随机字符 三角函数 Date对象 基础知识 日期对象具体API 构造函数 ...

  7. LeetCode.1103-向人们分发糖果(Distribute Candies to People)

    这是小川的第393次更新,第425篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第256题(顺位题号是1103).我们通过以下方式向一排n = num_people个人分 ...

  8. 手写LVQ(学习向量量化)聚类算法

    LVQ聚类与k-means不同之处在于,它是有标记的聚类,设定带标签的k个原型向量(即团簇中心),根据样本标签是否与原型向量的标签一致,对原型向量进行更新. 最后,根据样本到原型向量的距离,对样本进行 ...

  9. Springboot 上传报错: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceede

    Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: The ...

  10. Tensorf实战第九课(自编码AutoEncoder)

    本节我们将了解神经网络进行非监督形式的学习,即autoencoder自编码 假设图片经过神经网络后再输出的过程,我们看作是图片先被压缩然后解压的过程.那么在压缩的时候,原有的图片质量被缩减,解压时用信 ...