gpt4 book ai didi

docker - docker :dind in docker-compose的使用

转载 作者:行者123 更新时间:2023-12-02 18:34:17 39 4
gpt4 key购买 nike

所以出于某种原因,我想在 docker-compose.yml 中使用 docker:dind。我知道“简单”的方法是直接将套接字安装在图像中(例如:/var/run/docker.sock:/var/run/docker.sock)但我想避免这种情况(出于安全原因) .

这是我的实验 docker-compose.yml :

version: '3.8'
services:
dind:
image: docker:19.03.7-dind
container_name: dind
restart: unless-stopped
privileged: true
environment:
- DOCKER_TLS_CERTDIR=/certs
volumes:
- dind-certs-ca:/certs/ca
- dind-certs-client:/certs/client
networks:
- net
expose:
- 2375
- 5000

volumes:
dind-certs-ca:
dind-certs-client:
networks:
net:
driver: bridge

这里没什么复杂的,然后我尝试查看服务是否正确设置:

docker logs dind

这里没问题,它已经启动并运行了。但是,一旦我尝试将它与例如一起使用:

docker run --rm -it --network net --link dind:docker docker version

我收到以下错误:

Cannot connect to the Docker deamon at tcp://docker:2375. Is there a deamon running ?

你知道为什么守护进程没有响应吗?

-------------------------------------------- - - - - - - 编辑 - - - - - - - - - - - - - - - - - - - ----------------------

根据 hariK 的评论(顺便感谢),我将端口 2376 添加到公开的端口。我想我正在解决我的问题。这是我得到的错误:

error during connect: Get http://docker:2375/v1.40/version dial tcp: lookup on docker on [ip]: no such host

于是我查看了这个错误,发现它似乎是dind版本上经常出现的错误(gitlab上有很多问题就可以了like this one)。在 gitlab 的类似问题上也有关于 stackoverflow 的帖子 here .

对于我尝试过的解决方法:

  1. 输入此值 DOCKER_TLS_CERTDIR: "" 跳转以关闭 TLS ... 但它失败了
  2. 将版本降级到 docker:18.05-dind。它确实奏效了,但我认为这不是一个好的举措。

如果有人有想法保持 TLS ON 并使其正常工作,那就太好了 :)(我仍然会自己寻找,但如果你能提供一些有趣的链接,那就太棒了 ^^)

最佳答案

要在禁用 TLS 的情况下使用 Docker(即默认情况下的 TCP 端口 2375),请在 Docker Compose 的 dind 服务定义中取消设置 DOCKER_TLS_CERTDIR 变量,例如:

  dind:
image: docker:dind
container_name: dind
privileged: true
expose:
- 2375
environment:
- DOCKER_TLS_CERTDIR=

(注意:不要将其初始化为任何值,如 ''"")

关于docker - docker :dind in docker-compose的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62328362/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com