Dockerized jenkins是个不错的选择?

时间:2015-09-17 13:52:39

标签: jenkins docker continuous-integration

正如标题中所提到的,我想到了一个码头化的詹金斯。我有一个运行所有测试的运行容器,但现在我想运行一些部署工作。

文件(.py,.conf,.sh)将被复制到由其他容器(应用程序容器)安装的文件夹中。正如我所看到的一些建议不要使用docker。

现在我想知道我是否应该继续在容器中使用jenkins(所以我必须找到运行部署脚本的方法)或者更喜欢在服务器上安装它?

2 个答案:

答案 0 :(得分:1)

如果您正在运行dockerized Jenkins进行生产,最好将其卷安装在Docker主机上。

由于Jenkins的非静态IP以及docker网络的可靠性问题,我个人不喜欢使用dockerized Jenkins进行制作。对于非生产用途,我停靠Jenkins。

答案 1 :(得分:0)

我们正在尝试将詹金斯集中在生产中 - 能够轻松设置或移动实例的灵活性抵消了学习的痛苦,而且痛苦是:

1 - 某些构建作业本身是容器化的,需要您运行docker-in-docker。这可以通过将主机docker.sock传递到Jenkins的容器中来实现。 (更多阅读:https://getintodevops.com/blog/the-simple-way-to-run-docker-in-docker-for-ci)。它要求主机和Jenkins容器运行相同版本的Docker,但我可以忍受它。

2 - SSH密钥是一个更大的问题。 Docker中的ssh代理转发以其不可靠性而臭名昭着,我们总是将密钥复制到容器中(忽略此问题上下文的安全问题)。在主机Jenkins实例中,我们将ssh键放在Jenkins的主文件夹中,一切都无缝地工作。但是,dockerized Jenkins的主文件夹位于Docker卷中,该卷由主机系统拥有,因此密钥太开放了。我们通过将密钥复制到Jenkins主页外的文件夹,chown / chmod'到Jenkins容器用户的那些密钥,然后将密钥路径添加到容器的/ etc / ssh / ssh_config来解决这个问题。