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.