2015-05-05 25 views
12

Tôi đang cố sử dụng plugin docker trên Jenkins để chạy một phiên bản của vùng chứa hiện có. Docker phiên bản 1.6.0, xây dựng 4749651sử dụng plugin docker trên jenkins -

tôi đã chọn "tạo container" nhập id hình ảnh cho tên hình ảnh, và cố gắng một loạt http://172.16.42.43:4243 và cũng đã cố gắng một loạt sản phẩm nào. tôi tiếp tục nhận được lỗi này:

ERROR: Build step failed with exception 
java.lang.NullPointerException: uri was not specified 
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204) 
    at com.github.dockerjava.core.DockerClientConfig$DockerClientConfigBuilder.withUri(DockerClientConfig.java:406) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.createDockerClient(DockerBuilder.java:123) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.getDockerClient(DockerBuilder.java:201) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:71) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.Build$BuildExecution.build(Build.java:205) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:162) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) 
    at hudson.model.Run.execute(Run.java:1744) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 
Build step 'Execute Docker container' marked build as failure 

Ai đó có thể cho tôi biết làm thế nào để sửa chữa nó? Ngoài ra, nếu có ai đó đã sử dụng plugin này trước đây, vui lòng cho tôi biết nếu điều này có hiệu quả không.

Cũng thử "Vùng chứa bộ nạp đế" -> bắt đầu vùng chứa với id vùng chứa được chỉ định dẫn đến lỗi tương tự.

cách tiếp cận khác: tôi đã cố gắng sử dụng Execute cắm vỏ trong và tôi nhận được lỗi này:

+ docker start d023eec1ff34 
Post http:///var/run/docker.sock/v1.18/containers/d023eec1ff34/start: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS? 
time="2015-05-05T10:26:34-07:00" level=fatal msg="Error: failed to start one or more containers" 

Nếu tôi chỉ cần đi đến nhà ga, chuyển sang Jenkins dùng và chạy Docker bắt đầu lệnh, nó hoạt động tốt. Nếu ai đó biết cách sửa nó theo cách này, điều đó cũng sẽ tuyệt vời.

+0

phiên bản Docker? Kiểm tra các bản ghi của docker (nó có thể nằm trong /var/log/docker.log hoặc trong /var/log/upstart/docker.log, tùy thuộc vào hệ điều hành của bạn), cũng cố gắng khởi động trình gỡ rối Docker trong chế độ gỡ lỗi. xem --debug = true docs.docker.com/reference/commandline/cli/#daemon – user2915097

+0

Có thể là điều này, trích xuất từ ​​http://serverfault.com/questions/639459/why-might-the-jenkins-user-not -have-permission-to-access-the-docker-unix-socket0 \t Tôi cho rằng đặc quyền nhóm jenkins để docker unix socket 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 ubuntu/etc/default/docker là tệp cấu hình đế. – user2915097

+0

Tôi đã thử thêm nó vào mặc định jenkins. Ngoài ra, tôi đã thử thêm người dùng jenkins vào nhóm docker. Tôi đã làm điều đó trên 2 máy không có may mắn. – max

Trả lời

14

Giả sử Docker đang chạy trên cùng một máy, hãy chắc chắn để chạy Docker với:

-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock

Sau đó đi đến Quản lý Jenkins> Configuration> Configure Hệ thống sau đó cuộn xuống để Docker Builder và trong máy chủ Docker url REST của nhập http://localhost:4243

được sửa đổi: Tôi đã nói với Docker để nghe trên 0.0.0.0 liên kết với tất cả các địa chỉ IP và có thể cho phép các kết nối từ bên ngoài nếu Firewall của bạn cho phép lưu lượng truy cập thông qua. Vì vậy, tôi cập nhật nó để liên kết với địa chỉ loopback thay thế. Ngoài ra, phiên bản hiện tại của tài liệu đề xuất một cổng khác nhưng vì bạn chỉ định cổng theo cách thủ công mà bất kỳ cổng nào cũng sẽ thực hiện.

+2

FYI 4243 là cổng daemon docker cũ, cổng chính thức đã kết thúc là 2375 vào cuối – Alex

+1

Tôi khuyên bạn nên sử dụng tcp: //127.0.0.1 thay vì 0.0.0.0 vì bạn có thể không muốn cung cấp docker với thế giới bên ngoài. – Nitek

+0

Bạn sẽ đưa lại những lá cờ này cho lệnh nào? – jonalv

3

Bạn cần phải cung cấp cho phép người sử dụng Jenkins sử dụng Docker, mua thêm nó vào Docker nhóm, chạy

sudo usermod -a -G docker jenkins 
Các vấn đề liên quan