docker:dind
该镜像包含 Docker 客户端(命令行工具)和 Docker daemon。
通过 docker history docker:dind 命令我们发现 docker:dind 是在 docker:latest 基础上又安装了 Docker daemon,并且最后两个构建命令为:
在 run 该镜像时,不能指定 sh CMD 参数,dockerd-entrypoint.sh 命令接收到该参数并不会启动 Docker daemon。想要正确启动容器里的 Docker daemon 并且进入容器需要分步进行:
$ docker run -d --name dind --privileged docker:dind
$ docker logs -f dind
$ docker exec -it dind sh
启动
docker:dind容器时,参数--privileged必须加上,否则 Docker daemon 启动时会报错
docker:latest
该镜像只包含 Docker 客户端,需要有 Docker daemon 支持,可以使用 docker:dind 的,也可以挂载宿主机的 /var/run/docker.sock。
通过 docker history docker:latest 命令发现 CMD 默认为 sh:
启动不需要
--privileged参数
- 启动方式一
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest
- 启动方式二
docker run --privileged -e DOCKER_TLS_CERTDIR="" -d -it --name dockerd docker:dind
docker run --rm -it --link dockerd:docker docker:latest sh