加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

码头上的jenkins可以进入码头码头

发布时间:2020-12-16 03:30:28 所属栏目:安全 来源:网络整理
导读:我有一个工作流程如下将webapps发布到我的开发服务器.服务器有一个docker主机,我使用docker-compose来管理容器. 将我的应用程序中的更改推送到私有gitlab(在docker中运行).该应用程序包括一个Dockerfile和docker-compose.yml Gitlab触发一个jenkins构建(jenk

我有一个工作流程如下将webapps发布到我的开发服务器.服务器有一个docker主机,我使用docker-compose来管理容器.

>将我的应用程序中的更改推送到私有gitlab(在docker中运行).该应用程序包括一个Dockerfile和docker-compose.yml
> Gitlab触发一个jenkins构建(jenkins也在docker中运行),它执行一些正常的构建(例如运行测试)
> Jenkins然后需要建立一个新的码头图像,并使用docker-compose进行部署.

我在第3步中遇到的问题是,我设置的方式,jenkins容器可以访问主机停靠站,以便在构建脚本中运行任何docker命令与在主机上运行的Docker命令基本相同.这是使用以下DockerFile for jenkins完成的:

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权限.我写了更多关于这里:http://container-solutions.com/2015/03/running-docker-in-jenkins-in-docker/

这并不影响安全性,因为docker特权与sudo权限有效地相当.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读