使用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的时候要进行指定。

 

posted @   Zhai_David  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示