我正在尝试使用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
实验性:错误
答案 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 ~