工作日志——Docker in Docker
来源:互联网 发布:html2canvas.js的下载 编辑:程序博客网 时间:2024/06/05 12:20
前段时间在研究Jenkins Docker插件时了解到了Docker in Docker(下文简称dind)相关知识,特与大家分享。
简介
dind顾名思义就是在一个Docker容器中运行Docker。其最初是为了简化Docker自身开发的步骤,因为修改in程序之后需要重启Docker Daemon。而有了dind之后,开发人员就可以避免重启主机的Docker Daemon,而是使用最新代码直接在容器中运行新的Docker Daemon。
后来人们开始尝试在CI中使用dind,使用Docker创建一个具有构建环境的容器,并在容器中构建镜像或运行应用容器。这样可以保证构建环境的统一和干净,而且创建构建节点非常方便和快速。
目前发现有两种实现思路,各有利弊。可参考这篇文章
方法一
这种方式的资料可以参考Docker Hub官方镜像的说明。这种方法的大概思路是:
- 运行在主机的容器需要设置–privileged参数,同时需要为容器中的/var/lib/docker目录设置存储卷。
- 使用的镜像包含了完整的Docker运行环境,包括client和daemon。
- 官方镜像是将client和daemon分成了两个镜像,另一种类似的镜像(如jpetazzo/dind)是将client和daemon都运行在一个容器中。
这种方法的坏处在文章中也有所提及:
- 一是使用–privileged参数会使得容器内的Docker在设置一些安全配置时对主机上的Docker产生影响。
- 第二是cache的使用问题,如果容器内的Docker想要共享cache或共享主机cache,那么这种方法是不能解决的。
方法二
这种方式不是真正意义上的dind,其思路是:
- 将主机的docker.sock挂载到容器中
- 容器中只需使用client就可以访问daemon,不过访问的是主机的daemon
这种方式避免使用–privileged参数,并且所有容器内的Docker可以共享主机的cache来提高构建效率。但这种方法也有缺点,就是隔离性的问题,例如不同容器内的Docker构建同名镜像会存在覆盖的问题。
下载docker client方法为:
在下面两个地址中选择对应包来下载linux docker binary:
- .tgz">https://get.docker.com/builds/Linux/i386/docker-<version>.tgz
- .tgz">https://get.docker.com/builds/Linux/x86_64/docker-<version>.tgz
下载之后解压可以得到下列文件,其中docker/docker就是client:
$ tar -xvzf docker-1.11.0.tgzdocker/docker/docker-containerd-ctrdocker/dockerdocker/docker-containerddocker/docker-runcdocker/docker-containerd-shim
两种方法各有优劣,大家可根据实际需求进行选择。
0 0
- 工作日志——Docker in Docker
- 工作日志——Docker Registry GC
- 工作日志——Docker Registry GC
- docker日志的故事——详解Docker日志运维
- Docker时代——如何实现日志数据一键上云
- 【Docker系列】——Docker简介
- 【Docker系列】——Docker 架构介绍
- Docker总结——Docker Registry
- 【docker】docker—应用的管理平台
- Docker学习笔记 — Docker镜像
- Docker学习笔记 — Docker容器
- Docker学习笔记 — Docker命令总结
- Docker学习笔记 — Docker网络总结
- Docker学习笔记 — Docker Volume
- ERROR——running docker in CORE on Fedora23
- docker的日志
- docker 日志位置
- Docker日志收集-splunk
- web前端 关于IE8,7,6兼容问题笔记<四处收集>
- script标签中async,defer两个属性的区别
- L1-003. 个位数统计
- maven 源码包 中文乱码
- Centos7 openvpn-2.3.10启动失败 '/tmp': Permission denied
- 工作日志——Docker in Docker
- 【视频】上海陆家嘴四季酒店香艳视频完整版
- 【CodeForces】651C - Watchmen(排序,容斥原理)
- 【android】:android积累1之如何实现标题栏消失
- 学习新技术的 10 个建议
- 算法原理与分析之分治法
- 图形用户界面设计
- ThinkPHP中图片按比例切割
- nvelocity和jQuery冲突问题