当前位置: 首页 > 面试题库 >

在Jenkins从站上发布docker命令

孙修贤
2023-03-14
问题内容

我有一个运行在Windows Server
2016上的Jenkins主服务器。我需要能够运行linux容器来运行一些自动化的e2e测试。出于某些原因,我无法在此计算机上启用hyper-v。这使我无法在Jenkins主服务器上安装lcow和docker

我要做的是在virtualbox中安装Ubuntu 18.04
VM,并在那里安装docker。我已经使用ssh将VM配置为Jenkins从属,以jenkins用户身份登录。我已经为此用户设置并配置了所有功能,使其能够在不使用的情况下运行docker命令sudo。如果以jenkins用户手动SSH进入服务器,则可以运行docker命令而不会出现问题。一切都按您期望的方式工作。

然后,我设置了一个测试版本,以检查一切是否正常运行。问题是,当我尝试使用Execute Shell构建步骤运行docker命令时,出现docker: not found错误。据我所知,该构建以正确的用户身份运行。我添加who -u到了构建步骤,因此可以检查构建以哪个用户运行。

这是我的构建的输出:

[TEST - e2e - TEST] $ /bin/sh -xe /tmp/jenkins16952572249375249520.sh
+ who -u
jenkins  pts/0        2018-08-10 16:43   .         10072 (10.0.2.2)
+ docker run hello-world
/tmp/jenkins16952572249375249520.sh: 3: /tmp/jenkins16952572249375249520.sh: docker: not found

如前所述,jenkins用户已添加到docker组,而Docker已添加到$PATH/snap/bin/):

jenkins@jenkins-docker-slave:~$ which docker
/snap/bin/docker
jenkins@jenkins-docker-slave:~$ $PATH
-bash:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
jenkins@jenkins-docker-slave:~$ who -u
jenkins  pts/0        2018-08-10 16:43   .         10072 (10.0.2.2)
jenkins@jenkins-docker-slave:~$ cat /etc/group | grep docker
docker:x:1001:qctesting,jenkins

如您所见,我可以通过以jenkins用户身份登录服务器来成功运行docker命令:

jenkins@jenkins-docker-slave:~$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
 3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 html" target="_blank">https://docs.docker.com/engine/userguide/

我还从属节点属性中配置了docker的路径,因为我认为它可以解决我的问题。如您所见,我同时列出了git和docker。Git命令运行正常。只是docker命令给我带来了问题。我都尝试过/snap/bin并且/snap/bin/docker没有运气。

在此处输入图片说明

我正在尝试构建一个詹金斯工作,该工作将克隆git repo,旋转我需要使用的容器docker- compose以及在构建时传递的一些构建参数,并针对任何环境(例如质量保证,阶段,生产等)运行e2e测试。
)。我只是无法让詹金斯奴隶来运行docker命令。我想念什么?我如何让从服务器识别docker已经安装在系统上,并且用户具有执行这些命令的正确权限。

注意:
我不是要在docker中运行docker。我在jenkins从属服务器上运行docker命令时发现的几乎所有问题/文档都描述了如何通过在docker容器中运行从属服务器并将docker客户端安装在从属容器中来解决此问题。那不是我想要完成的。我正在尝试从jenkins主服务器切换到已经安装了docker的jenkins从服务器,并以jenkins用户身份在该服务器上运行docker命令。


问题答案:

终于有了这个问题的答案,我终于明白了。阅读该答案后,我意识到我在Ubuntu上安装了错误版本的docker。我删除了先前的安装,并使用安装了正确的docker软件包sudo curl -sSL https://get.docker.com/ | sh。然后,我重新启动了我的詹金斯奴隶,一切开始正常工作。



 类似资料:
  • 我有一个Jenkins master运行在Windows Server2016上。我需要能够运行linux容器来运行一些自动化的e2e测试。由于我不想讨论的原因,我无法在这台机器上启用hyper-v。这使我无法在Jenkins master上安装lcow和docker 相反,我所做的是在virtualbox中设置一个Ubuntu18.04VM,并在那里安装docker。我已经将VM配置为Jenki

  • 我在运行Windows 7的同一台机器上安装了Jenkins和Docker ToolBox。在运行Jenkins构建时,除了docker之外,所有命令都可以正常工作。当我尝试使用Jenkins在构建步骤中运行docker命令时,它给我错误。 E: \Jenkins\workspace\docker应用程序 但同样的命令适用于windows命令提示符。任何帮助都将不胜感激。

  • 问题内容: 如何将UDP端口从Docker容器转发到主机? 问题答案: 使用-p标志并将后缀添加到端口号。 全指令 如果在Mac上运行boot2docker,请确保将boot2docker上的相同端口转发到本地计算机。 您还可以在以下位置暴露端口: 这是容器文档中包含更多Docker网络信息的链接:https : //docs.docker.com/config/containers/contai

  • 发布网站 你现在应该有一个在本地运行的网站。 一旦你将它定制为你喜欢样子,就是时候发布它了。 Docusaurus 生成一个静态 HTML 网站,准备好由您最喜爱的网络服务器或在线托管解决方案来提供服务。 构建静态 HTML 页面 要创建您的网站的静态版本,请在 website 的目录中运行以下脚本: yarn run build # 或 `npm run build` 这将在 website

  • 问题内容: 目前,我们在Windows上拥有Jenkins主服务器,Ubuntu从属服务器和Windows从属服务器。我正在尝试在Windows从站上设置git。安装了msysgit,并将目录包括在系统路径变量中,以便可以在任何地方调用“ git.exe”或“ git.cmd”。 在我的Jenkins配置中,我有一个带有私有SSH密钥的凭证。该凭据供詹金斯与Git一起使用。这适用于主节点和linu

  • 问题内容: 我知道在DOS / Windows应用程序中,您可以使用以下代码行从系统发出系统命令: 要么 …来自stdlib.h。是否有类似的Linux命令,如果可以,我可以在哪个头文件中找到它? 另外,这被认为是不好的编程习惯吗?我正在考虑尝试使用该命令获取已加载的内核模块的列表。这是个好主意还是坏主意?我发现一些网站似乎对系统调用(至少是system(“ pause”);)持负面看法。 问题答