Docker не найден при создании образа docker с помощью конвейера контейнера Docker Jenkins
у меня есть Дженкинс, работающий как контейнер docker, теперь я хочу построить образ Docker с помощью конвейера, но контейнер Jenkins всегда говорит, что Docker не найден.
[simple-tdd-pipeline] Running shell script
+ docker build -t simple-tdd .
/var/jenkins_home/workspace/simple-tdd-pipeline@tmp/durable-
ebc35179/script.sh: 2: /var/jenkins_home/workspace/simple-tdd-
pipeline@tmp/durable-ebc35179/script.sh: docker: not found
вот как я запускаю изображение Дженкинса:
docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v
/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock
jenkins
и DockerFile изображения Дженкинса: https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dockerfile
2 ответов
вам не хватает клиента docker. Установите его как это в Dockerfile:
RUN curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz \
&& tar xzvf docker-17.04.0-ce.tgz \
&& mv docker/docker /usr/local/bin \
&& rm -r docker docker-17.04.0-ce.tgz
Edit: Май 2018
как отмечает Гийом Husta этот статья в блоге jpetazzo рекомендует этот метод:
бывшие версии этого поста посоветовали
bind-mount
двоичный файл docker от хоста к контейнеру. Это больше не является надежным, потому что Docker Engine больше не распространяется как (почти) статические библиотеки.
клиент Docker должен быть установлен внутри контейнер, как описано здесь. Кроме того,jenkins
пользователь должен быть в docker
группа, поэтому выполните следующее:
$ docker exec -it -u root my-jenkins /bin/bash
# usermod -aG docker jenkins
и, наконец, перезапустить my-jenkins
контейнер.
оригинальный ответ:
вы можете использовать хост docker engine
как в этой @Adrian Mouat блог статьи.
docker run -d \
--name my-jenkins \
-v /var/jenkins_home:~/.jenkins \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 jenkins
это позволяет избежать наличия нескольких версий docker engine на хосте и контейнере jenkins.