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

如何创建用于构建Docker映像的Jenkins管道

孔驰
2023-03-14

我是Docker和Jenkins的新手,我正在尝试创建一个Jenkins管道来构建Docker的形象。我在尝试构建时遇到了问题,并不断收到此错误:

/var/jenkins_home/workspace/Docker-Pipeline@tmp/耐用-a11b32f8/脚本。sh:第1行:docker:未找到命令

  1. 我已经在虚拟机上安装了ubuntu

我正在做和他完全一样的事情,但总是失败。

Started by user admin
Obtained Jenkinsfile from git https://github.com/naorca/NodeApp.git
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start o

f Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/Docker-Pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Clone repository)
[Pipeline] checkout
No credentials specified
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/naorca/NodeApp.git # timeout=10
Fetching upstream changes from https://github.com/naorca/NodeApp.git
 > git --version # timeout=10
 > git fetch --tags --progress https://github.com/naorca/NodeApp.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision b74538f2f34b6c28306fcca8119e215b87124e5e (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f b74538f2f34b6c28306fcca8119e215b87124e5e
Commit message: "Update Jenkinsfile"
 > git rev-list --no-walk b74538f2f34b6c28306fcca8119e215b87124e5e # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build image)
[Pipeline] sh
+ docker build -t naorca/nodeapp .
/var/jenkins_home/workspace/Docker-Pipeline@tmp/durable-a11b32f8/script.sh: line 1: docker: command not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

共有1个答案

单于轶
2023-03-14

TL;医生:你的詹金斯探员中一定有Docker。

按照上面描述的过程,我使用Docker Hub提供的最新Jenkins/Jenkins图像启动并运行Jenkins。在查看了容器的文件系统之后,我确认了我在对您的问题的评论中推测的内容:Docker没有安装在Jenkins容器中。假设您使用Jenkins主服务器作为管道作业的代理,您会想到几个选项:

  1. 扩展现有的docker容器--在一个新的docker文件中使用类似于OF jenkins/jenkins的东西--以包含您的依赖项。
  2. 将现有的docker守护进程从主机绑定到Jenkins容器的运行时。

虽然我偏爱第一种解决方案,但我在Docker论坛上发现了第二种解决方案的实现:“在Docker化的Jenkins容器中使用Docker”,然后我尝试了该解决方案,并可以在启动Jenkins容器后使用以下命令确认Docker在Jenkins主容器中为我存在:

docker run -v /var/run/docker.sock:/var/run/docker.sock \
    -v $(which docker):$(which docker) \
    -p 8000:8080 \
    -p 50000:50000 \
    jenkins/jenkins

我不确定,但我可以想象,由于将自己的Docker套接字和Docker可执行文件安装到容器中,Jenkins Master的主机可能会受到一些负面的安全影响;然而,我会把这个问题留给更了解Docker内部结构的人来决定。无论如何,我可以确认上述解决方案确实有效。

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

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

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

  • 问题内容: 我想用已经填充的数据创建一个MySQL Docker映像。 我想要创建3个这样的图层: 我的问题是现在如何为第2层和第3层创建正确的Dockerfile?将我的empty_with_tables.sql文件加载到第2层,并将customer1.sql和customer2.sql加载到第3层的两个映像中。我读了一些有关将SQL文件放入’/docker- entrypoint- initd

  • 问题内容: 我正在尝试 使用 官方链接中提到 的API 构建 docker镜像 。 但是我无法获得文件中的内容:示例请求: 有几件事使我感到困惑, 1)在哪里提到 Dockerfile 的 路径 ? 2)“归档文件必须在归档文件的根目录中包含一个构建指令文件,通常称为Dockerfile。” 来自docker docs的此声明,这里的困惑 是存档的根 是 什么 ? 3) 构建图像的详细命令 是什么