关于-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
$ docker run -it -v /var/run/docker.sock:/var/run/docker.sock docker

原理图如下:

好处:

  • 减少复杂性
  • 防止使用不安全的 privileged container

缺点:

  • 名称冲突, 和宿主机的容器名称不能相同
  • 挂在路径, 在容器内用 Docker CLI 挂载目录时是相对于宿主机
  • 端口映射,同样是和宿主机.

使用 Nestrbox


关于-docker-dind
http://example.com/2022/11/05/关于-docker-dind/
作者
Jie
发布于
2022年11月5日
许可协议