在(Docker里的)Jenkins里运行Docker

  • 时间:
  • 浏览:2
  • 来源:5分11选5APP下载_5分11选5APP官方

好极了!一点人 可能在Jenkins容器内成功运行了Docker命令。请注意,这里趋于稳定有有好几个 重大的安全问提图片:Jenkins用户对宿主具有root权限,比如Jenkins可不里能 创建装载宿主任意目录的容器。假如,务必确保你你这人 容器只对受信用户访问,并考虑使用VM来将Jekins与宿主一点每种隔被抛弃。还有一点的土辦法 ,主却说Docker in Docker(DinD)以及使用HTTPS与Docker后台线程通讯。DinD并不比使用特权模式的容器安全性高,不过着实能外理使用sudo。DinD最主要的劣势你不在无法重用宿主缓存的镜像(不过可能还要为测试容器提供有有好几个 与宿主隔离的干净环境,这将很有用)。通过HTTPS暴露socket不还要sudo假咋样不里能 使用宿主的镜像,但可能打开了端口增加了攻击面,可不里能 说是最不安全的。我将在未来的文章中深入说明咋样安全地设置HTTPS socket上的Docker。原文链接:Running Docker in Jenkins (in Docker)(翻译:梁晓勇 审校:魏小红)

原文发布时间为:2015-06-11

原文标题:在(Docker里的)Jenkins里运行Docker

可能愿意安装任何插件,可创建个空文件或将相关指令从Dockerfile中删除。本文并不还要上述插件。现在来构建并运行容器,将Docker socket和线程映射进来。

$ docker build -t myjenk .
...
Successfully built 471fc0d22bff
$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 3030:3030 myjenk

本文来自云栖社区合作伙伴DockerOne,了解相关信息可不里能 关注DockerOne。

本文作者:sean 

现在你都是有有好几个 运行在http://localhost:3030的Docker实例可不里能 用来运行Docker命令了。可通过如下步骤快速测试一下:

  • 在浏览器中打开Jenkins首页,并点击“创建有有好几个 新任务”链接。
  • 输入项目名称(比如“docker-test”),选取“构建有有好几个 自由风格的软件项目”并点击OK。
  • 在配置页面,点击“增加构建步骤”并选取“Execute shell”。
  • 在命令框里输入“sudo docker run hello-world”。
  • 点击“保存”。
  • 点击“立即构建”。
运气好得话,应经常经常出现有有好几个 绿(或蓝)球。点击你你这人 球,并选取“Console Output”,你将看一遍相似如下内容:

在本文中,一点人 将快速了解一下咋样在有有好几个 容器装到载Docker sock以便创建其“兄弟”容器。我的有有好几个 同事称之为DooD(Docker-outside-of-Docker),以区别于DinD(Docker-in-Docker),后者是在容器中安装有有好几个 详细的隔离的Docker版本。DooD比DinD简单得多(至少 在配置方面),尤其是能重用并缓存宿主上的镜像。反之,可能你想实现镜像对宿主的隐藏和隔离,则最好使用DinD。为说明DooD的工作土辦法 ,一点人 将在有有好几个 Jenkins容器内使用DooD,从而能在Jenkins任务中创建并测试容器。一点人 希望使用Jenkins用户来创建哪些地方地方容器,假如会比使用root用户稍微麻烦些。这特别很像Pini Reznik在“使用Docker、Mesos实现持续交付”中描述的技术,不过一点人 将使用sudo来外理Pini面临的将用户加入Docker组的问提图片。一点人 使用官方Jenkins镜像作为基础,剩下的事情就很简单了。创建有有好几个 包容以下内容的Dockerfile:

FROM jenkins:1.596

USER root
RUN apt-get update \
  && apt-get install -y sudo \
  && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

本文讲的是在(Docker里的)Jenkins里运行Docker【编者得话】在Docker中使用Docker一种土辦法 ,区别在于环境是有无与宿主隔被抛弃来。本文以在Jenkins中使用Docker为例,说明咋样通过加载宿主Docker socket和线程达成重用宿主镜像的目的。文章最后还讨论了你你这人 土辦法 面临的安全问提图片,务必在实际使用时加以考虑。

一点人 还要赋予jenkins用户sudo权限以便能在容器内运行Docker命令。当然,也可不里能 将jenkins用户加入到Docker组中来外理在所有Docker命令前使用‘sudo’,不过可能你你这人 组gid的不同会造成不可移植(如Pini文中所述)。最后两行用于外理plugins.txt文件中定义的插件。可能你不还要任何插件可不里能 忽略这两行,不过我推荐至少 包括如下内容:

$ cat plugins.txt
scm-api:latest
git-client:latest
git:latest
greenballs:latest