私の個人用PCに簡単なパイプラインを構築しようとしています。私はJenkins verを持っています。 2.32.2がインストールされ、実行中です。以下は私のパイプラインのための仕事のDSLです:jenkins 'スクリプトを実行する'ビルドステップエラー:/ bin/docker:許可が拒否されました
node {
stage('Github Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '921fd840-1d71-4b06-bf5e-1c6f3141f669', url: '[email protected]:justinsr20/tdd_django.git']]])
}
stage('Build containter image') {
sh 'whoami'
}
stage('Build containter image') {
sh 'pwd'
}
stage('Build containter image') {
sh 'ls -l'
}
stage('Build containter image') {
sh 'docker build -t jenkins/django:v1 -t jenkins/django:latest .'
}
}
私はドッキングウィンドウがインストールされていると私はドッキングウィンドウグループ内ジェンキンスのユーザーを持っている:
[[email protected] bin]# grep 'docker' /etc/group
docker:x:977:judd,jenkins
奇妙なことは、ジェンキンスさんは私に以下のアクセス権のエラーを与えることです
[workspace] Running shell script
+ whoami
jenkins
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build containter image)
[Pipeline] sh
[workspace] Running shell script
+ pwd
/var/lib/jenkins/jobs/tdd_django/workspace
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build containter image)
[Pipeline] sh
[workspace] Running shell script
+ ls -l
total 20
drwxr-xr-x. 3 jenkins jenkins 4096 Feb 10 11:11 django_app
-rw-r--r--. 1 jenkins jenkins 97 Feb 10 12:37 Dockerfile
-rw-r--r--. 1 jenkins jenkins 15 Feb 10 11:11 requirements.txt
-rw-r--r--. 1 jenkins jenkins 66 Feb 10 11:11 run_tests.sh
-rwxr-xr-x. 1 jenkins jenkins 69 Feb 10 12:48 script.sh
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build containter image)
[Pipeline] sh
[workspace] Running shell script
+ docker build -t jenkins/django:v1 -t jenkins/django:latest .
/var/lib/jenkins/jobs/tdd_django/[email protected]/durable-77854956/script.sh: line 2: /bin/docker: Permission denied
私ドッカ権限:
上記の私の定義されたパイプラインのドッキングウィンドウのビルドコマンドを実行しようとするとbash-4.3$ which docker
/bin/docker
bash-4.3$ ls -la /bin/docker
-rwxr-xr-x. 1 root root 12056512 Feb 8 16:44 /bin/docker
が、私はジェンキンスユーザとしてシェルセッションを開いたとき、私はコマンドを実行することができます何の問題:
[[email protected] bin]# sudo su -s /bin/bash jenkins
bash-4.3$ cd /var/lib/jenkins/jobs/tdd_django/workspace
bash-4.3$ ls
django_app Dockerfile requirements.txt run_tests.sh script.sh
bash-4.3$ docker build -t jenkins/django:v1 -t jenkins/django:latest .
Sending build context to Docker daemon 76.8 kB
Step 1/3 : FROM python:2.7-onbuild
# Executing 3 build triggers...
Step 1/1 : COPY requirements.txt /usr/src/app/
---> Using cache
Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt
---> Using cache
Step 1/1 : COPY . /usr/src/app
---> Using cache
---> fb9aa7078336
Step 2/3 : LABEL maintainer "CMI Industries"
---> Using cache
---> c1888038ffa2
Step 3/3 : RUN chmod +x /usr/src/app/run_tests.sh
---> Using cache
---> 8e61860e0567
Successfully built 8e61860e0567
任意のヘルプは大歓迎されないであろう。
EDIT更新:
issues.jenkins-ci.org/browse/JENKINS-24338が関連している場合ので、私は、ドッキングウィンドウのサービスが開始される方法を変更する必要があります。
[[email protected] system]# systemctl show --property=FragmentPath docker
FragmentPath=/usr/lib/systemd/system/docker.service
と、このファイルの内容::
systemctl start docker
私が使用このコマンドの設定ファイルを見つけるために:私は使用して私のドッキングウィンドウのサービスを開始する方法
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target firewalld.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
[Install]
WantedBy=multi-user.target
イムわかりませんissues.jenkins-ci.org/で説明されているように、jenkinsユーザーをdefault-used 'docker'グループに追加するのではなく、 "jenkins"グループの所有権をソケットに適用するように私がこのファイルを変更する必要がありますブラウズ/ JE NKINS-24338
sudoテストでbashの代わりにshを使用するとどうなりますか? – BMitch
[root @ localhost bin]#sudo su -s/bin/sh jenkins sh-4.3 $ type docker ドッカーは/ bin/docker –
すべての明白な点をチェックしていればうまくいくはずです。 selinuxビットがディレクトリリストに設定されているのを見ています。もし無効になっていなければ、次にそれを試してみましょう。 – BMitch