密码包含特殊字符时,Docker机密不起作用

时间:2018-10-11 20:34:48

标签: docker jenkins docker-swarm jenkins-slave

我正在尝试使用docker-compose提供的here运行jenkins swarm代理。

问题是我正在使用由我的管理团队提供的服务帐户来对jenkins master进行身份验证,并且该服务帐户的密码包含特殊字符\(反斜杠)和/(正斜杠)。示例:

  

abcdefghifjd12 \ ab /

我使用此密码创建的Docker机密不起作用。我尝试了没有任何特殊字符的个人帐户,该帐户可以正常使用。因此,我认为问题在于docker在创建机密时如何解释这些特殊字符。我尝试转义反斜杠并使用单引号作为密码,但是不起作用。我在下面尝试过

#use password as it is in double quotes
echo "abcdefghifjd12\ab/" | docker secret create jenkins-user -

#use backslash to escape backslash
echo "abcdefghifjd12\\ab/" | docker secret create jenkins-user -

#use single quotes
echo 'abcdefghifjd12\ab/' | docker secret create jenkins-user -

没有工作。我该如何解决这个问题?

服务器:

  

版本:17.06.2-ee-6

     

API版本:1.30(最低版本1.12)

     

Go版本:go1.8.3

     

Git提交:e75fdb8

     

内置:2017年11月27日星期一22:44:25

     

OS / Arch:linux / amd64

     

实验性:错误

1 个答案:

答案 0 :(得分:0)

使用docker升级版,我能够执行相同的操作。

在“群体”中,我在manager-1上创建了一个秘密:

    [manager1] (local) root@192.168.0.41 ~
    $ echo "abcdefghifjd12\ab/" | docker secret create jenkins-user -
    jxykdlqklpo5ml81c4bfa9a4o


    [manager1] (local) root@192.168.0.41 ~
    $ docker service create --secret jenkins-user alpine sleep 1d
    sgmrof1cwwubmhz1qqibu4aof
    overall progress: 1 out of 1 tasks
    1/1: running
    verify: Service converged
    [manager1] (local) root@192.168.0.41 ~
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    sgmrof1cwwub        wizardly_boyd       replicated          1/1                 alpine:latest
    [manager1] (local) root@192.168.0.41 ~


    [manager2] (local) root@192.168.0.43 ~
    docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    f4552c4718c5        alpine:latest       "sleep 1d"          2 minutes ago       Up 2 minutes                wizardly_boyd.1.4gb4nwgiqagfyn10vuvt9pb4v
    [manager2] (local) root@192.168.0.43 ~
    $ docker exec -it f45 sh
    / # cd /run
    /run # cd secrets/
    /run/secrets # ls
    jenkins-user
    /run/secrets # cat jenkins-user
    abcdefghifjd12\ab/

Docker版本信息:

    $ docker version
    Client:
     Version:      18.03.1-ce
     API version:  1.37
     Go version:   go1.9.2
     Git commit:   9ee9f40
     Built:        Thu Apr 26 07:12:25 2018
     OS/Arch:      linux/amd64
     Experimental: false
     Orchestrator: swarm

    Server:
     Engine:
      Version:      18.03.1-ce
      API version:  1.37 (minimum version 1.12)
      Go version:   go1.9.5
      Git commit:   9ee9f40
      Built:        Thu Apr 26 07:23:03 2018
      OS/Arch:      linux/amd64
      Experimental: true
    [manager1] (local) root@192.168.0.41 ~