当前位置: 首页 > 知识库问答 >
问题:

使用Docker容器管道构建docker映像时未找到DockerJenkins

国跃
2023-03-14

我有一个Jenkins作为docker容器运行,现在我想使用管道构建docker映像,但Jenkins容器总是告诉docker not found。

[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

Jenkins图像的DockerFile是:https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dockerfile

共有3个答案

耿运浩
2023-03-14

编辑: May 2018

正如Guillaume Husta所指出的,这篇jpetazzo的博客文章不鼓励这种技巧:

这篇文章的以前版本建议将docker二进制文件从主机绑定到容器。这不再可靠,因为Docker引擎不再作为(几乎)静态库分发。

Docker客户端应安装在此处描述的容器中。此外,jenkins用户应该在docker组中,因此执行以下操作:

$ docker exec -it -u root my-jenkins /bin/bash
# usermod -aG docker jenkins

最后重新启动my-jenkins容器。

原始答案:

你可以在@Adrian Mouat的博客文章中使用主机的docker引擎。

 docker run -d \
   --name my-jenkins \
   -v /var/jenkins_home:~/.jenkins \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -p 8080:8080 jenkins

这避免了主机和jenkins容器上有多个docker引擎版本。

周马鲁
2023-03-14

在Jenkins界面中,进入“管理Jenkins/全局工具配置”

然后向下滚动至Docker安装,点击“添加Docker”。给它起个像“myDocker”这样的名字

确保选中“自动安装”框。点击“添加安装程序”并选择“从docker.com下载”。在Docker版本中保留“最新”。确保单击“保存”。

在您的文件中,在运行任何docker命令之前添加以下阶段:

 stage('Initialize'){
        def dockerHome = tool 'myDocker'
        env.PATH = "${dockerHome}/bin:${env.PATH}"
    }
雷逸仙
2023-03-14

您缺少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

来源

 类似资料:
  • 问题内容: 我有一个Jenkins作为docker容器运行,现在我想使用管道构建Docker映像,但是Jenkins容器总是告诉未找到Docker。 这是我运行詹金斯图像的方式: Jenkins映像的DockerFile是:https : //github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock

  • 问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test

  • 通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J

  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 我是Docker和Jenkins的新手,我正在尝试创建一个Jenkins管道来构建Docker的形象。我在尝试构建时遇到了问题,并不断收到此错误: /var/jenkins_home/workspace/Docker-Pipeline@tmp/耐用-a11b32f8/脚本。sh:第1行:docker:未找到命令 我已经在虚拟机上安装了ubuntu 我正在做和他完全一样的事情,但总是失败。

  • 假设我在Fedora中以的身份登录,我将从Dockerfile构建Docker映像。该映像将包含一个LAMP环境。我有一个Apache虚拟主机(VH)默认文件,如下所示: 作为构建过程的一部分,该文件被复制到图像上的适当位置。 我可以从主机获取登录用户名并动态设置到此VH吗?最后,我希望得到以下结果: 我知道我可以从bash中使用获取当前用户的值,但我如何在Docker构建中将其插入/设置到VH文