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

     

  • 相关阅读:
    Bozh 的技术博客 梦想成为Gnu/Linux | Unix后台架构师 | Read the fucking source code
    Welcome to the TANGO website
    repowatcher : about
    PyTango documentation — PyTango 8.0.2 documentation
    Visual Studio 2010旗舰版正式版序列号 civilman的专栏 博客频道 CSDN.NET
    BoostPro Binary Installer for Visual C++
    分享:httping 1.5.6 发布,HTTP 诊断工具
    浅析epoll – epoll函数深入讲解 C++爱好者博客
    分享:Jython动态加载Jar
    News BoostPro Computing BoostPro
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/16779294.html
Copyright © 2020-2023  润新知