Tại sao người dùng Jenkins không được phép truy cập vào ổ cắm Docker unix?


9

Tôi đã thêm jenkinsngười dùng vào dockernhóm với suy nghĩ rằng nó sẽ cho phép các công việc của Jenkins chạy các lệnh Docker. Nếu tôi chuyển sang jenkinsngười dùng, tôi có thể xác minh nó hoạt động (thủ công):

ubuntu@hostname:~$ ps aux | grep java
jenkins   2210  9.5  7.5 1950316 292896 ?      Sl   00:01   1:00 /usr/bin/java -jar /data/jenkins/jenkins-1.586.war --httpPort=8080 -Xloggc:/var/log/jenkins/gc.log
ubuntu@hostname:~$ getent group docker
docker:x:999:jenkins
ubuntu@hostname:~$ ls -la /var/run/docker.*
-rw-r--r-- 1 root root   4 Oct 23 18:32 /var/run/docker.pid
srw-rw---- 1 root docker 0 Oct 23 18:32 /var/run/docker.sock
ubuntu@hostname:~$ sudo su -s /bin/bash jenkins
jenkins@hostname:/home/ubuntu$ docker ps
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                     NAMES

Tuy nhiên, trong quá trình xây dựng / công việc của Jenkins, nó không được phép:

# Job log
Started by user Matt Wright
Building on master in workspace /data/jenkins/jobs/docker-base-images-build/workspace
[ssh-agent] Using credentials CI-jenkins
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Java/JNR ssh-agent
[ssh-agent] Started.
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@github.com:<redacted>/docker-base-images.git # timeout=10
Fetching upstream changes from git@github.com:<redacted>/docker-base-images.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress git@github.com:<redacted>/docker-base-images.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 83c4463e7195b412a3a803dd7338210c1a772f55 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 83c4463e7195b412a3a803dd7338210c1a772f55
 > git rev-list 83c4463e7195b412a3a803dd7338210c1a772f55 # timeout=10
[workspace] $ /bin/sh -xe /tmp/hudson5606381166745886966.sh
+ ./build.sh
Sending build context to Docker daemon 
2014/10/24 16:14:18 Post http:///var/run/docker.sock/v1.15/build?rm=1&t=<redacted>%2Fpython%3A3.4: dial unix /var/run/docker.sock: permission denied
Build step 'Execute shell' marked build as failure
[ssh-agent] Stopped.
Notifying upstream projects of job completion
Finished: FAILURE

Đây là với Docker 1.3.0 và Ubuntu 14.04.1. Bất kì manh mối nào?


Có vẻ liên quan đến vấn đề này . Khởi động lại đã giải quyết điều này cho tôi.
smilly92

Khởi động lại không giải quyết điều này cho tôi.
Matt W

1
Có vẻ như Jenkins bỏ các nhóm khác ngoài nhóm chính của Jenkins. Khi tôi chạy lệnh id từ shell với tư cách là người dùng Jenkins, tôi thấy rằng nó thuộc nhóm docker, nhưng khi tôi chạy id trong một công việc tự do, nó chỉ hiển thị cho người dùng Jenkins. Tôi chưa tìm ra cách khắc phục.
Joseph Mulloy

Trước tiên hãy chắc chắn rằng bạn có người dùng jenkins trong nhóm docker. Sau đó, nếu nô lệ bạn gặp sự cố được kết nối với chủ, hãy ngắt kết nối và sau đó kết nối lại. Thực hiện việc này thông qua 'quản lý jenkins' / 'quản lý các nút'.
arminmor

Câu trả lời:


12

Tôi nghĩ rằng việc trao đặc quyền của nhóm jenkins cho docker unix socket sẽ giải quyết được vấn đề. Điều này có thể được sửa đổi với cấu hình tùy chọn khởi động docker daemon trong tệp cấu hình bằng cách thêm dòng này

DOCKER_OPTS=' -G jenkins'

Trong ubfox /etc/default/dockerlà tập tin cấu hình docker.


Đây vẫn là giải pháp tiếp theo của tôi cho các cài đặt mới trên Ubuntu 16.04
chì_brogrammer

1

Chạy groupslệnh bằng jenkins. Bạn có thấy một dockernhóm không? Nếu không, hãy thử khởi động lại nô lệ Jenkins đó. Hoặc chỉ cần giết tiến trình nô lệ Jenkins: ps aux | grep jenkins


Sau khi thực hiện một vài bước ở trên, phần cuối cùng để làm cho nó hoạt động là kết nối lại nô lệ jenkins. Cảm ơn vì tiền hỗ trợ.
Dean Poulin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.