成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Docker Secret的管理和使用詳解

瀏覽:3日期:2024-11-04 16:20:07
一、什么是Docker Secret(一)情景展現

我們知道有的service是需要設置密碼的,比如mysql服務是需要設置密碼的:

version: ’3’services: web: image: wordpress ports: - 8080:80 volumes: - ./www:/var/www/html environment: WORDPRESS_DB_NAME=wordpress WORDPRESS_DB_HOST: mysql WORDPRESS_DB_PASSWORD: root networks: - my-network depends_on: - mysql deploy: mode: replicated replicas: 3 restart_policy: condition: on-failure delay: 5s max_attempts: 3 update_config: parallelism: 1 delay: 10s mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress volumes: - mysql-data:/var/lib/mysql networks: - my-network deploy: mode: global placement: constraints: - node.role == managervolumes: mysql-data:networks: my-network: driver: overlay

可以看到在這個docker-compose.yml中的兩個service密碼都是明文,這樣就導致了不是很安全,那么究竟什么是Docker secret以及能否解決上面的問題呢?

(二)Docker Secret

Docker Secret的管理和使用詳解

我們知道manager節點保持狀態的一致是通過Raft Database這個分布式存儲的數據庫,它本身就是將信息進行了secret,所以可以利用這個數據庫將一些敏感信息,例如賬號、密碼等信息保存在這里,然后通過給service授權的方式允許它進行訪問,這樣達到避免密碼明文顯示的效果。

總之,secret的Swarm中secret的管理通過以下步驟完成:

secret存在于Swarm Manager節點的的Raft Database里 secret可以assign給一個service,然后這個service就可以看到這個secret 在container內部secret看起來像文件,實際上就是內存二、Docker Secret的創建與使用(一)創建

我們先看看創建的一些幫助說明:

[root@centos-7 ~]# docker secret --helpUsage: docker secret COMMANDManage Docker secretsCommands: create Create a secret from a file or STDIN as content inspect Display detailed information on one or more secrets ls List secrets rm Remove one or more secretsRun ’docker secret COMMAND --help’ for more information on a command.

第一個命令就是創建的命令,我們再來看看它有什么幫助信息:

[root@centos-7 ~]# docker secret create --helpUsage: docker secret create [OPTIONS] SECRET [file|-]Create a secret from a file or STDIN as contentOptions: -d, --driver string Secret driver -l, --label listSecret labels --template-driver string Template driver

可以看到說明secret可以來自于一個文件或者一個標準輸出。那么也就是Secret的創建有兩種方式,分別是:

基于文件的創建 基于命令行創建

1、基于文件創建

首先先創建一個文件用于存放密碼

[root@centos-7 ~]# vim mysql-passwordroot

然后再進行創建secret

[root@centos-7 ~]# docker secret create mysql-pass mysql-password texcct9ojqcz6n40woe97dd7k

其中,mysql-pass是secret的名稱,mysql-password是我們建立存儲密碼的文件,這樣執行后就相當于將文件中的密碼存儲在Swarm中manager節點的Raft Database中了。為了安全起見,現在可以直接將這個文件刪掉,因為Swarm中已經有這個密碼了。

[root@centos-7 ~]# rm -f mysql-password

現在可以查看一下secret列表:

[root@centos-7 ~]# docker secret lsID NAMEDRIVER CREATED UPDATEDtexcct9ojqcz6n40woe97dd7k mysql-pass 4 minutes ago 4 minutes ago

已經存在了。

2、基于命令行創建

[root@centos-7 ~]# echo 'root' | docker secret create mysql-pass2 -hrtmn5yr3r3k66o39ba91r2e4[root@centos-7 ~]# docker secret lsID NAMEDRIVER CREATED UPDATEDtexcct9ojqcz6n40woe97dd7k mysql-pass 6 minutes ago 6 minutes agohrtmn5yr3r3k66o39ba91r2e4 mysql-pass2 5 seconds ago 5 seconds ago

這種方式還是很簡單的就創建成功了

(二)其它操作

那么secret還有什么其它操作嗎?

[root@centos-7 ~]# docker secret --helpUsage: docker secret COMMANDManage Docker secretsCommands: create Create a secret from a file or STDIN as content inspect Display detailed information on one or more secrets ls List secrets rm Remove one or more secretsRun ’docker secret COMMAND --help’ for more information on a command.

可以看到除了create命令外,還有inspect、ls、以及rm命令。

1、inspect

[root@centos-7 ~]# docker secret inspect mysql-pass2[ { 'ID': 'hrtmn5yr3r3k66o39ba91r2e4', 'Version': { 'Index': 4061 }, 'CreatedAt': '2020-02-07T08:39:25.630341396Z', 'UpdatedAt': '2020-02-07T08:39:25.630341396Z', 'Spec': { 'Name': 'mysql-pass2', 'Labels': {} } }]

展示secret的一些詳情信息

2、rm

[root@centos-7 ~]# docker secret rm mysql-pass2mysql-pass2[root@centos-7 ~]# docker secret lsID NAMEDRIVER CREATED UPDATEDtexcct9ojqcz6n40woe97dd7k mysql-pass 12 minutes ago 12 minutes ago

刪除一個secret

(三)Secret在單容器中的使用

1、容器中查看secret

我們創建了一個secret,如何在啟動一個服務后,將其授權給特定的服務然后它才可以看到呢?先看看創建服務的命令中是否有類似的命令或者參數:

[root@centos-7 ~]# docker service create --helpUsage: docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]Create a new serviceOptions: --config config Specify configurations to expose to the service... --secret secret Specify secrets to expose to the service......

確實是有這樣的命令,在創建服務時可以給服務暴露出secret。

2、創建服務

[root@centos-7 ~]# docker service create --name demo --secret mysql-pass busybox sh -c 'while true; do sleep 3600; done'zwgk5w0rpf17hn77axz6cn8dioverall progress: 1 out of 1 tasks 1/1: running verify: Service converged

查看這個服務運行在那個節點上:

[root@centos-7 ~]# docker service lsID NAME MODEREPLICAS IMAGEPORTSzwgk5w0rpf17 demo replicated 1/1 busybox:latest [root@centos-7 ~]# docker service ps demoID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSyvr9lwvg8oca demo.1 busybox:latest localhost.localdomain Running Running 51 seconds ago

可以看到這個服務運行在localhost.localdomain主機的節點上,我們去這個節點上進入到容器內部,看是否能查看secret:

[root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTSNAMES36573adf21f6 busybox:latest 'sh -c ’while true; …'4 minutes ago Up 4 minutes demo.1.yvr9lwvg8ocatym20hdfublhd[root@localhost ~]# docker exec -it 36573adf21f6 /bin/sh/ # lsbin dev etc home proc root run sys tmp usr var/ # cd /run/secrets/run/secrets # lsmysql-pass/run/secrets # cat mysql-pass root/run/secrets #

可以看到確實是可行的。

2、mysql服務

關于mysql鏡像,詳情查看https://hub.docker.com/_/mysql其中有關于secret的描述:

作為通過環境變量傳遞敏感信息的替代方法,_FILE可以將其附加到先前列出的環境變量中,從而使初始化腳本從容器中存在的文件中加載那些變量的值。特別是,這可用于從/run/secrets/<secret_name>文件中存儲的Docker Secret加載密碼。例如:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag

目前,這僅支持MYSQL_ROOT_PASSWORD,MYSQL_ROOT_HOST,MYSQL_DATABASE,MYSQL_USER,和MYSQL_PASSWORD。

所以我們需要先創建一個文件secret用于存儲數據庫的敏感信息,因為之前已經創建過,這里無需再創建:

[root@centos-7 ~]# docker secret lsID NAMEDRIVER CREATED UPDATEDtexcct9ojqcz6n40woe97dd7k mysql-pass 4 hours ago 4 hours ago

啟動mysql服務:

[root@centos-7 ~]# docker service create --name db --secret mysql-pass -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-pass mysqlsbpagzqvpwt8ifymavf8o5xmioverall progress: 1 out of 1 tasks 1/1: running verify: Service converged

查看mysql服務在那個節點上:

[root@centos-7 ~]# docker service lsID NAMEMODEREPLICAS IMAGEPORTSsbpagzqvpwt8 db replicated 0/1 mysql:latest [root@centos-7 ~]# docker service ps dbID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSqlmfm6u7lg8u db.1 mysql:latest localhost.localdomain Running Starting 2 seconds ago

在worker節點中進入該服務的容器中查看secret:

[root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTS NAMES2ac2a810e931 mysql:latest 'docker-entrypoint.s…' 3 minutes ago Up 2 minutes 3306/tcp, 33060/tcp db.1.qlmfm6u7lg8u8i1v2m2c3ls3r[root@localhost ~]# docker exec -it 2ac2a810e931 /bin/sh# cd /run/secrets/# lsmysql-pass# cat mysql-passroot

這樣知道了密碼就可以進入到mysql數據庫中了。

# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 9Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ’help;’ or ’h’ for help. Type ’c’ to clear the current input statement.mysql> (四)Secret在Stack中的使用

Stack利用的就是docker-compose.yml文件來部署stack,那么如何在docker-compose.yml中來定義secret呢?

version: ’3’services: web: image: wordpress ports: - 8080:80 secrets: - my-pw environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_PASSWORD_FILE: /run/secrets/wordpress-pass networks: - my-network depends_on: - mysql deploy: mode: replicated replicas: 3 restart_policy: condition: on-failure delay: 5s max_attempts: 3 update_config: parallelism: 1 delay: 10s mysql: image: mysql secrets: - my-pw environment: MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql-pass MYSQL_DATABASE: wordpress volumes: - mysql-data:/var/lib/mysql networks: - my-network deploy: mode: global placement: constraints: - node.role == managervolumes: mysql-data:networks: my-network: driver: overlay

上面通過在environment中定義WORDPRESS_DB_PASSWORD_FILE以及MYSQL_ROOT_PASSWORD_FILE來制定secret,顯然我們在運行這個docker-compose.yml文件之前必須先要進行對應的secret文件的創建。然后就可以通過docker stack deploy命令來部署這個stack了。

到此這篇關于Docker Secret的管理和使用詳解的文章就介紹到這了,更多相關Docker Secret內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Docker
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲最新视频在线观看| 色网综合在线观看| 国产亚洲精品久久久久婷婷瑜伽| 欧美三级在线播放| 日韩电影在线一区| 久久综合一区二区三区| 亚洲第一激情av| 免费在线成人| 亚洲妇熟xx妇色黄| 亚洲看片一区| 亚洲欧美视频在线观看视频| 在线播放一区| 伊人一区二区三区| 一区二区国产精品| 一区二区三区欧美| 国产精品一区二区三区免费观看| 精品久久免费看| 成人午夜伦理影院| 国产不卡高清在线观看视频| 一区二区三区国产在线| 亚洲欧洲精品一区二区三区| 国产字幕视频一区二区| 国产精品高潮呻吟久久| 91美女片黄在线观看91美女| 精品盗摄一区二区三区| av福利精品导航| 国产欧美一区二区精品性| 欧美激情 亚洲a∨综合| 国产婷婷色一区二区三区四区| 99re热这里只有精品视频| 国产午夜亚洲精品午夜鲁丝片| 欧美/亚洲一区| 国产精品超碰97尤物18| 亚洲激情综合| 亚洲一区在线看| 香蕉成人久久| 免费一级片91| 日韩一区二区三区av| 成人h动漫精品| 久久久九九九九| 伊人久久综合| 午夜精品成人在线视频| 欧美综合在线视频| 国产91精品免费| 国产欧美精品在线观看| 影音先锋中文字幕一区| 一区二区三区 在线观看视频| 久久精品二区| 国产乱码精品一区二区三区忘忧草 | 欧美日本韩国一区二区三区视频 | 黄色成人av网站| 亚洲一区二区精品久久av| 91国偷自产一区二区三区观看| 国产在线精品一区二区三区不卡| 精品1区2区在线观看| 亚洲婷婷在线| 亚洲v中文字幕| 欧美一区二区性放荡片| 欧美激情自拍| 午夜精品视频在线观看| 欧美一区二区视频在线观看2020| 欧美1区免费| 一区二区三区在线观看动漫| 欧美色图免费看| 91原创在线视频| 亚洲午夜私人影院| 欧美高清激情brazzers| 欧美精品一区二区三区在线看午夜| 亚洲综合小说图片| 欧美日韩成人综合| 欧美喷水视频| 日韩精品电影一区亚洲| 91精品国产品国语在线不卡| 狠色狠色综合久久| 美女在线一区二区| 日本一区二区三区电影| 午夜一区二区三区不卡视频| 国产精品99久| 亚洲女性喷水在线观看一区| 欧美日韩免费视频| 国产精品v欧美精品∨日韩| 日本特黄久久久高潮| 久久久久久久久久久久电影 | 在线精品视频免费播放| www.99精品| 亚洲动漫第一页| 精品国产露脸精彩对白| 国产欧美三级| 国产91在线|亚洲| 樱桃国产成人精品视频| 日韩一区二区三区视频| 国内欧美视频一区二区| 欧美剧在线免费观看网站| 久久国产福利国产秒拍| 国产精品久久久久久久蜜臀| 欧美日韩一级片在线观看| 亚洲视频碰碰| 国产精品一区二区在线观看不卡 | 日韩影院免费视频| 久久精品一区四区| 在线一区二区观看| 伊人精品成人久久综合软件| 国产成人午夜电影网| 亚洲国产一区二区三区| 久久精品人人做人人爽人人| 欧美午夜精品一区二区蜜桃| 亚洲二区三区四区| 成人免费黄色在线| 日本在线观看不卡视频| ...中文天堂在线一区| 在线综合视频播放| 亚洲影音一区| 欧美日韩在线观看一区二区三区| 狠狠色丁香久久婷婷综合丁香| 亚洲另类中文字| 久久久久亚洲综合| 欧美日韩国产综合草草| 国产一区二区三区高清| 色综合天天综合网天天狠天天| 另类小说图片综合网| 亚洲综合在线电影| 日本一区二区电影| 欧美成人一区二区三区| 欧美综合一区二区三区| 亚洲麻豆视频| 99久久777色| 久久 天天综合| 亚洲电影中文字幕在线观看| 国产精品毛片久久久久久| 日韩精品一区二区在线| 欧美午夜电影网| 久久人人超碰| 91久久国产自产拍夜夜嗨| 色综合欧美在线视频区| 国产mv日韩mv欧美| 精品亚洲国内自在自线福利| 婷婷中文字幕一区三区| 亚洲精品日日夜夜| 国产精品女同互慰在线看| 精品国产精品一区二区夜夜嗨| 欧美猛男gaygay网站| 欧美亚洲一区二区三区| 一区在线播放| 欧美高清日韩| 99综合电影在线视频| 国产suv精品一区二区三区| 久久精品国产**网站演员| 午夜伊人狠狠久久| 亚洲一区在线视频| 亚洲欧美日韩国产中文在线| 国产精品久久夜| 中文字幕视频一区| 一区二区三区四区视频精品免费 | 欧美大片拔萝卜| 日韩香蕉视频| 国产精品小仙女| 蜜桃视频一区二区| 亚洲电影第三页| 亚洲综合视频网| 亚洲欧美日韩在线不卡| 一色屋精品亚洲香蕉网站| 中文字幕欧美日本乱码一线二线| 欧美大白屁股肥臀xxxxxx| 91精品国产综合久久精品图片 | 久久综合av免费| 国产麻豆精品视频| 国产精品99久久久久| 欧美性天天影院| 久久综合九色综合欧美98| 久草在线在线精品观看| 国产三级精品在线不卡| 久久婷婷国产综合国色天香| 久久这里只有精品首页| 琪琪一区二区三区| 在线免费观看视频一区| 亚洲一级影院| 欧美性大战久久久久| 黄色成人精品网站| 亚洲性色视频| 亚洲欧洲一级| 国产伦精品一区二区| 亚洲欧美日韩精品在线| 一本久久a久久精品亚洲| 日本国产一区二区| 欧美日韩国产美女| 欧美精品一卡二卡| 日韩欧美亚洲国产精品字幕久久久 | 国产欧美视频一区二区三区| 亚洲国产成人私人影院tom | 国产成人精品综合在线观看| 国产成人精品一区二区三区网站观看 | 婷婷开心久久网| 久久狠狠亚洲综合| 成人午夜电影久久影院| 欧美a级片一区| 在线日韩电影| 蜜桃视频一区| 欧美日韩国产高清一区二区三区| 日韩欧美一级精品久久| 久久尤物电影视频在线观看|