使用secret时,如何指定secret在容器中的名字?
service使用sercret时,在容器的默认的位置及文件名字是:
/run/secrets/<secret_name>
那么,如果要更改secret在容器中的名字,该怎么做?
下面,通过一个示例,来展示如何达成这个目的:
1、创建secret
printf "This is a secret" | docker secret create my_secret_data -
命令执行过程,my_secret_data 就是创建好的secret
[root@nccztsjb-node-01 ~]# printf "This is a secret" | docker secret create my_secret_data - qx2t78obd2j0mrtcpwk7pjbc2 [root@nccztsjb-node-01 ~]# docker secret ls ID NAME DRIVER CREATED UPDATED qx2t78obd2j0mrtcpwk7pjbc2 my_secret_data 27 seconds ago 27 seconds ago 24u7ecumb6l9r24uafdrx1bvz server.crt 11 days ago 11 days ago gdz4m7ogit8fy0nc81o5ue7am server.key 11 days ago 11 days ago [root@nccztsjb-node-01 ~]#
2、创建service,使用这个secret
docker service create --name nginx_sec --secret my_secret_data \ --with-registry-auth \ 172.20.58.152/middleware/nginx:1.21.4
命令执行过程
[root@nccztsjb-node-01 ~]# docker service create --name nginx_sec --secret my_secret_data \ > --with-registry-auth \ > 172.20.58.152/middleware/nginx:1.21.4 rjq7yrab98k1pk5r19d1165mn overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged [root@nccztsjb-node-01 ~]#
3、查看secret在容器中的位置信息
[root@nccztsjb-node-01 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS rjq7yrab98k1 nginx_sec replicated 1/1 172.20.58.152/middleware/nginx:1.21.4 [root@nccztsjb-node-01 ~]# docker service ps nginx_sec ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS piea9uv4o1ph nginx_sec.1 172.20.58.152/middleware/nginx:1.21.4 nccztsjb-node-01 Running Running 45 seconds ago [root@nccztsjb-node-01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72bd86586d5d 172.20.58.152/middleware/nginx:1.21.4 "/docker-entrypoint.…" 56 seconds ago Up 54 seconds 80/tcp nginx_sec.1.piea9uv4o1php4v7k9s24l6ca [root@nccztsjb-node-01 ~]# docker exec -it 72bd86586d5d bash root@72bd86586d5d:/# cd /run/ root@72bd86586d5d:/run# ls lock nginx.pid secrets utmp root@72bd86586d5d:/run# cd secrets/ root@72bd86586d5d:/run/secrets# ls my_secret_data root@72bd86586d5d:/run/secrets# ll bash: ll: command not found root@72bd86586d5d:/run/secrets# ls my_secret_data root@72bd86586d5d:/run/secrets# cat my_secret_data This is a secretroot@72bd86586d5d:/run/secrets# root@72bd86586d5d:/run/secrets# root@72bd86586d5d:/run/secrets#
可以看到/run/secrets/my_secret_data就是挂载到容器中secret的名字
接下是最重要的,就是如果要改这个名字
4、重建service,指定容器中的secret的名字
docker service rm nginx_sec docker service create --name nginx_sec \ --secret source=my_secret_data,target=testsecret \ --with-registry-auth \ 172.20.58.152/middleware/nginx:1.21.4
查看secret在容器中的位置
[root@nccztsjb-node-04 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1867541ac254 172.20.58.152/middleware/nginx:1.21.4 "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp nginx_sec.1.qrzzzfvgjkz9xb28xyvv5inxc [root@nccztsjb-node-04 ~]# docker exec -it 1867541ac254 bash root@1867541ac254:/# cd /run/secrets/ root@1867541ac254:/run/secrets# ls -l total 4 -r--r--r-- 1 root root 16 Oct 11 06:59 testsecret root@1867541ac254:/run/secrets# cat testsecret This is a secretroot@1867541ac254:/run/secrets#
发现已经变为 testsecret 这个名字了。
关键点
要达到修改secret在容器中的名字,关键是参数
--secret source=my_secret_data,target=testsecret
对,就是target,在创建service的时候要进行指定。
分类:
(20)docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?