docker - 为什么自定义的 docker 容器无法连接到 tcp://docker:2375 的 Docker 守护进程?
问题描述
出于 CI/CD 的目的,我需要docker 中的 docker:
docker network create some-network
docker volume create some-docker-certs-ca
docker volume create some-docker-certs-client
docker run --privileged --name some-dind -d --network some-network --network-alias docker -e DOCKER_TLS_CERTDIR=/certs -v some-docker-certs-ca:/certs/ca -v some-docker-certs-client:/certs/client docker:dind
现在,如果我使用选项运行 docker:latest 映像-it
,我可以按预期在容器中使用 docker:
docker run --rm -it --network some-network -e DOCKER_TLS_CERTDIR=/certs -v some-docker-certs-client:/certs/client:ro docker:latest sh
/ # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
/ #
但我需要在 Dockerfile 中自定义 docker:latest 图像:
FROM docker:latest
# install package1
# install package2
# install package3
...
# install package4
并构建自定义的 docker 镜像:
docker build -t customized-docker .
但是当我使用选项运行自定义 docker 映像时-it
,它无法连接到 docker 守护进程:
docker run --rm -it --network some-network -e DOCKER_TLS_CERTDIR=/certs -v some-docker-certs-client:/certs/client:ro customized-docker:latest sh
/ # docker ps
Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?
/ #
问题是什么?有没有什么办法可以使用自定义的 docker 镜像?
编辑: 我找到了一种更好的方法来做我的 CI/CD 没有“docker in docker”。正如 David Maze 所提到的,大多数时候,没有必要使用“docker in docker”。但我的问题仍然存在:为什么 docker:latest 容器可以连接到 docker 守护进程,而自定义的 docker 容器却不能。
解决方案
推荐阅读
- mlp - 如何使用库查找 sklearn MLPClassifier 中的参数数量?
- google-assistant - Google Actions Console - 发布被拒绝
- pandas - 布尔过滤器 geopandas 数据框紧随其后
- python - 我应该如何将 BM25Okapi 对象值保存到文件中?
- arrays - 将指向数组的指针传递给我的函数
- c# - 在 Visual Studio 中设置 SSL 证书
- r - 通过R中的相似字符/字符串匹配两个向量
- javascript - ChatJS 2.8.0 最小/最大轴问题和顶部的标签
- django - 基于 Django 类的视图流
- php - 两个 JSON 数组中的一对多关系,在 PHP 中查找结果