我已經在碼頭集裝箱上安裝了jenkins master並使用碼頭集裝箱內的Swarm插件運行一個從屬。我在碼頭奴隸內創建了一個組。一旦我使用docker exec -it <container> bash
和類型groups
進入從容器,我創建的組已正確列出。詹金斯工作的外殼和bash上碼頭集裝箱的不同羣體
但是,當我將groups
鍵入到作業說明shell並在創建的從屬設備上執行作業時,我的組未出現。
編輯: 奴隸容器:簡單地以用戶jenkins
啓動jenkins奴隸。啓動時,通過CMD [ "/startup.sh" ]
執行以下代碼(腳本:startup.sh)。 jenkins-slave.sh
根據https://gist.github.com/sfrehse/02c7d57fad862c71c20f07c59caba240提供。
DOCKER_SOCKET=/var/run/docker.sock
DOCKER_GROUP=dockergrp
JENKINS_USER=jenkins
if [ -S ${DOCKER_SOCKET} ]; then
DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
sudo groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
sudo usermod -aG ${DOCKER_GROUP} ${JENKINS_USER}
fi
/usr/local/bin/jenkins-slave.sh
從bash的啓動後:docker exec -it 8b85afe2b360 groups
輸出jenkins dockergrp
。
觸發的作業只是包含以下代碼:
whoami
groups
docker ps
輸出
jenkins
jenkins
Got permission denied while trying to connect to the Docker
daemon socket at unix:///var/run/docker.sock: Get
http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json: dial
unix /var/run/docker.sock: connect: permission denied
組dockergrp
中缺少第二行。
總的來說,我無法訪問碼頭守護進程沒有sudo
和問題似乎是缺少的組。運行命令docker exec -it <id> docker ps
會成功輸出我的運行容器。
打印您的容器的id,看看是否詹金斯正在運行的新容器和圖像。你如何添加組?使用自定義的Dockerfile? –
容器絕對是創建的。我跑了'sudo groupadd -for -g'最後'sudo usermod -aG jenkins'。 –
sfrehse
仍然沒有清楚地瞭解您的結局如何設置一切 –