ドッカーコンテナに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
コマンドを実行すると、実行中のコンテナが正常に出力されます。
あなたのコンテナIDを印刷し、ジェンキンスさんは、新しいコンテナを実行している画像れるかどうかを確認:あなたはので、ちょうど現在のものを置き換える、子プロセスを持たないために
exec
命令を付加することができます。どのようにグループを追加しましたか?カスタムDockerfileを使用していますか? –コンテナは間違いなく作成されたものです。 'sudo groupadd -for -g'と最後に 'sudo usermod -aG jenkins'を実行しました。 –
sfrehse
あなたの最後にすべてがどのように設定されているかを明確に把握していない –