关于-docker-dind
参考1
简介
dind 是 docker in docker 的意思.
其原理是在 docker 容器内包含 docker 命令行工具,其实际的执行交还给宿主机的 docker-engine 执行.
为什么使用 Docker-in-Docker
在 pipline 中运行的环境为 docker, 若还要使用 docker 命令,则形成了 Docker-in-Docker.
参考2
两种实现 Docker-in-Docker 的方式:
- DinD, Docker-in-Docker 在一个容器内运行 Docker daemon
- DooD, Docker-out-of-Docker, 只在容器内运行 Docker CLI, 和宿主机的 Docker daemon 连接.
DinD
利用 dind 这个镜像.
原理图:
DooD
将宿主机的 docker.sock
文件挂载到容器中.
如:
1 |
|
原理图如下:
好处:
- 减少复杂性
- 防止使用不安全的 privileged container
缺点:
- 名称冲突, 和宿主机的容器名称不能相同
- 挂在路径, 在容器内用 Docker CLI 挂载目录时是相对于宿主机
- 端口映射,同样是和宿主机.
使用 Nestrbox
关于-docker-dind
http://example.com/2022/11/05/关于-docker-dind/