Jenkins Pipeline 手记(5)—— Docker In Docker 那些事儿

引言

在定义Jenkins CI Pipeline时,我们难免会用到Docker。将复杂Build/Test/Deploy的过程放到容器中,既可以重用环境设置和工具集,也能高效地使用资源。不过我们可能遇到如下场景:

  • 在build过程中需要使用Docker命令来启动新的容器或者build新的image
  • Jenkins的master或者slave本身就是在容器中运行的

无论哪种情况,本质都是在Docker容器内部运行Docker命令,即所谓的 Docker-In-Docker - DIND场景。本文简单介绍DIND的概念和应用。

概念和原理

Docker In Docker从原理上说实际有两种方式,第一种可以说是伪DIND,也就是Docker的client端在另一个Docker容器中,而server端(docker daemon)还是在宿主机host上。

比如,你在host上启动了一个container(container-with-docker),这个container里面装有Docker CLI,你可以进行docker ps/push/build等操作:

docker run -it container-with-docker sh

接下来在container的sh程序里,你需要执行docker images命令。直接执行是不行的,因为命令的执行需要与Docker的server端daemon进程通信,container-with-docker这个容器内部并没有这个进程。这就

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值