https://www.cnblogs.com/anliven/p/13551614.html

 

 

 

 


1 – docker in docker(dind)

有时需要在容器内执行 docker 命令,比如:在 jenkins 容器内运行 docker 命令执行构建镜像
直接在 docker 容器内嵌套安装 docker 未免太过臃肿
更好的办法是:容器内仅部署 docker 命令行工具(作为客户端),实际执行交由宿主机内的 docker-engine(服务器)

2 – 两种方式

在docker容器内启动一个docker daemon,对外提供服务。
每个运行中的容器,都是一个进程,这个进程都托管在docker daemon中。
优点在于镜像和容器都在一个隔离的环境,保持宿主机的环境。

2.1 通过宿主机的docker.sock

通过类似docker run -v /var/run/docker.sock:/var/run/docker.sock的命令将宿主机 docker.sock 文件挂载到容器, 并且直接挂载宿主机的/usr/bin/docker, 这样容器内就不需安装 Docker 程序。
当容器内使用docker命令时,实际上调用的是宿主机的docker daemon和docker命令。
也就是说,容器内实际并未运行 docker server,但是能够通过宿主机执行docker任务,从而实现轻量级 docker in docker
需要特别说明的是,真正执行 docker 命令的是跑在宿主机上的 docker-engine(服务器),因此这并不是真正的 “Docker in Docker”.

2.2 通过docker:dind镜像

先启动一个docker:dind容器A,再启动一个docker容器B,容器B指定host为A容器内的docker daemon。

3 – 实例:Run Jenkins via Docker Desktop on Windows OS

https://www.jenkins.io/doc/book/installing/

启动Jenkins

获取初始密码

4 – Command List

涉及的一些命令

Action is the antidote to despair!

欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少部分内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!

以所舍,求所获,有所依,方所成。

分类: Docker

发表评论

电子邮件地址不会被公开。