2015-05-05 30 views
12

Próbuję użyć wtyczki docker na Jenkins, aby uruchomić wystąpienie istniejącego kontenera. Docker wersja 1.6.0, budować 4749651za pomocą wtyczki docker na jenkins -

wybrałem „stworzyć kontener” Wprowadzony identyfikator obrazu dla nazwy obrazu, i starał się zapamiętać http://172.16.42.43:4243 a także próbował pusty gospodarza. Wciąż otrzymuję ten błąd:

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 

Czy ktoś może mi powiedzieć jak to naprawić? Ponadto, jeśli ktoś wcześniej używał tej wtyczki, proszę dać mi znać, czy to kiedykolwiek zadziałało.

Próbowano również "Wykonaj kontener dokera" -> uruchom kontenery z podanym identyfikatorem kontenera, powodując ten sam błąd.

Innym podejściem: Próbowałem za pomocą wtyczki Execute powłoki i dostaję ten błąd:

+ 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" 

Gdybym po prostu pójść do terminalu, przełącznik Jenkinsa użytkownika i uruchomić doker komendy start, to działa dobrze. Jeśli ktoś wie, jak to naprawić, to też byłoby świetnie.

+0

wersja doker? Sprawdź dzienniki dokowania (może to być plik /var/log/docker.log lub w pliku /var/log/upstart/docker.log, w zależności od systemu operacyjnego), a także spróbuj uruchomić demona Docker w trybie debugowania. zobacz --debug = true docs.docker.com/reference/commandline/cli/#daemon – user2915097

+0

Może to być, wyciąg z http://serverfault.com/questions/639459/why-might-the-jenkins-user-not -jest-pozwolenie-na-dostęp-do-docker-unix-socket0 \t Myślę, że przyznanie przywilejów grupy Jennkins do gniazda unix docker rozwiązuje problem. Można to zmienić, konfigurując opcje uruchamiania demona dockera w pliku konfiguracyjnym, dodając tę ​​linię: DOCKER_OPTS = '-G jenkins' W katalogu ubuntu/etc/default/docker znajduje się plik konfiguracyjny docker. – user2915097

+0

Próbowałem dodać to do domyślnego ustawienia Jenkinsa. Próbowałem też dodać użytkownika jenkins do grupy docker. Zrobiłem to na 2 maszynach bez powodzenia. – max

Odpowiedz

14

Zakładając Docker jest uruchomiony na tym samym komputerze, należy uruchomić Döcker z:

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

Następnie przejdź do Manage Jenkins> Konfiguracja> Konfiguracja systemu następnie przewinąć do Docker Builder i w pozostałej url serwerze Docker wprowadzić http://localhost:4243

edycja: Pierwotnie powiedziałem Dockerowi, aby nasłuchiwał na 0.0.0.0, który wiąże się ze wszystkimi adresami IP i mógłby zezwolić na połączenia z zewnątrz, jeśli zapora przepuszcza ruch. Dlatego zaktualizowałem go, by zamiast tego wiązał się z adresem pętli zwrotnej. Obecna wersja dokumentacji zaleca inny port, ale ponieważ port zostanie określony ręcznie, zrobi to dowolny port.

+2

FYI 4243 jest starym portem demona docker, oficjalna zakończyła się 2375 na końcu – Alex

+1

Zdecydowanie zaleca się używanie tcp: //127.0.0.1 zamiast 0.0.0.0, ponieważ prawdopodobnie nie chcesz oferować docker do świata zewnętrznego. – Nitek

+0

Do którego polecenia ponownie podajesz te flagi? – jonalv

3

Trzeba dać uprawnień użytkownika do korzystania docker Jenkins, kupić dodając go do dokowanym grupę, uruchom

sudo usermod -a -G docker jenkins 
Powiązane problemy