我有以下工作流程,用于将Web应用发布到我的开发服务器。该服务器只有一个docker主机,我正在使用docker-compose来管理容器。
我遇到的问题是在步骤3中。通过设置方式,jenkins容器可以访问主机泊坞窗,因此docker
在构建脚本中运行任何命令与在主机上运行该命令本质上相同。DockerFile
对于詹金斯,使用以下命令完成此操作:
FROM jenkins
USER root
# Give jenkins access to docker
RUN groupadd -g 997 docker
RUN gpasswd -a jenkins docker
# Install docker-compose
RUN curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose
USER jenkins
并将以下卷映射到jenkins容器:
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
jenkins中的典型构建脚本如下所示:
docker-compose build
docker-compose up
可以,但是有两个问题:
感觉真像是在砍。但是我发现的唯一其他选择是将docker插件用于jenkins,发布到注册表,然后通过某种方式让主机知道需要重启。这是很多可移动的部分,并且docker-jenkins插件要求docker主机位于开放端口上,我真的不想透露它。
jenkins DockerFile包含groupadd -g 997 docker
需要它才能使jenkins用户访问docker。但是,GID(997)是主机上的GID,因此不可移植。
我不确定我要寻找什么解决方案。我看不到任何实际的方法可以解决该问题,但是如果有一种方法可以允许在jenkins容器内运行docker命令而不必在DockerFile中对GID进行硬编码,那就太好了。有人对此有任何建议吗?
我遇到了同样的问题。由于GID问题,我最终给了Jenkins无密码的sudo特权。我在这里写了更多有关此的内容:https : //blog.container-
solutions.com/running-docker-in-jenkins-in-docker
这实际上并没有影响安全性,因为拥有docker特权实际上等同于sudo权限。
问题内容: 以下是配置文件: 在这里可用。 运行以下命令后: 从浏览器启动时,詹金斯大师显示以下错误: 詹金斯大师的Docker文件在这里: 为什么詹金斯大师给这个例外? 问题答案: 问题是您使用了3岁的 Jenkins版本2.7.3。堆栈跟踪抱怨方法 根据Jenkins API,此方法在2.98版中引入。有关更多详细信息,请参见更改日志。
我们怎样才能完成它? 注意:使用jenkins-slave作为服务不是一个选项,因为我们有其他安全访问问题。
问题内容: 我想在Docker容器中运行Jenkins。一切都好。我可以这样运行:我也可以添加持久性存储。当我创建管道必须执行命令(和)时,问题就来了。首先,错误是未在系统上安装docker。是的,期望。然后我开始搜索,发现如何在容器中运行docker(传递2个持久卷): 这可以运行,但是有一些例外。容器中有命令,但是当我尝试运行它时,它将引发异常: 我该如何解决这个问题?在Docker中安装Je
问题内容: 我创建了在SVN上具有文件的Jenkins项目(https://repo.xxx.xxx/svn/priv/projectname;证书是自签名的)。我的问题是,詹金斯(Jenkins)对此项目有空的工作空间(仅.svn),并且无法连接到SVN存储库。错误号为: 詹金斯 版 1.521 我在某个地方建立了我应该使用 -Dsvnkit.http.sslProtocols = SSLv3
> 难道从詹金斯没有像主詹金斯那样安装和启动吗?我假设我将以同样的方式安装一个主Jenkins和另一个从Jenkins,然后主Jenkins将控制从Jenkins例如通过ssh?所以我不能通过GUI查看奴隶詹金斯? 我考虑在另一个VM上添加从Jenkins的原因是因为VM包含我们的应用服务器(许多测试环境)。从master Jenkins部署和启动/停止应用程序服务器是一个难题,因为master
有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。