2017-07-31 14 views
3

ドッカーコンテナにjenkins masterをインストールし、ドッカーコンテナ内のSwarmプラグインを使用してスレーブを実行しました。私はドッカースレーブ内にグループを作りました。 docker exec -it <container> bashを使用してスレーブコンテナに入り、groupsと入力すると、作成したグループが正しく表示されます。jockkinsジョブのシェルとbashとdockerコンテナの異なるグループ

しかし、ジョブ記述シェルにgroupsと入力し、その作成したスレーブでジョブを実行すると、私のグループは表示されません。

編集: スレーブコンテナ:ユーザーjenkinsとしてjenkins-slaveを開始するだけです。起動時に、CMD [ "/startup.sh" ]経由で次のコードが実行されます(script:startup.sh)。 jenkins-slave.shは、https://gist.github.com/sfrehse/02c7d57fad862c71c20f07c59caba240の下に提供されています。 bashのからの起動後

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 

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が2行目に欠けています。

全体的に、私はsudoなしでドッカーデーモンにアクセスすることができず、問題は欠落しているグループのようです。 docker exec -it <id> docker psコマンドを実行すると、実行中のコンテナが正常に出力されます。

+0

あなたのコンテナIDを印刷し、ジェンキンスさんは、新しいコンテナを実行している画像れるかどうかを確認:あなたはので、ちょうど現在のものを置き換える、子プロセスを持たないためにexec命令を付加することができます。どのようにグループを追加しましたか?カスタム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 sudo su -l jenkins -c /usr/local/bin/jenkins-slave.sh 
関連する問題