2017-07-31 52 views
3

我已經在碼頭集裝箱上安裝了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會成功輸出我的運行容器。

+0

打印您的容器的id,看看是否詹金斯正在運行的新容器和圖像。你如何添加組?使用自定義的Dockerfile? –

+0

容器絕對是創建的。我跑了'sudo groupadd -for -g '最後'sudo usermod -aG jenkins'。 – sfrehse

+0

仍然沒有清楚地瞭解您的結局如何設置一切 –

回答

1

添加組時有一個已知問題,它們不會爲已經登錄的用戶重新加載。

嘗試將最後一行到這一點:

sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh 

爲了下一個新的新鮮詹金斯登錄,啓動腳本。

注意:您可以爲了不生孩子的過程在前面加上一個exec指令,所以只需更換當前的一個:

exec sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh