在docker-compose中使用docker:dind

问题描述 投票:1回答:1

因此,出于某些原因,我想在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 here的类似问题,也有一篇关于stackoverflow的文章。

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

  1. 将此值DOCKER_TLS_CERTDIR: ""设置为跳跃以关闭TLS ...但是失败了
  2. 将版本降级为docker:18.05-dind。它确实有效,但是我认为这不是一个好举动。
  3. [如果有人有一个想法可以保持TLS启用并使其正常工作,那将是非常棒的:)(我仍然会自己寻找,但是如果您可以通过有趣的链接微调它,那将很酷^^)

因此,出于某些原因,我想在docker-compose.yml中使用docker:dind。我知道“简单”的方法是将套接字直接安装在映像内部(例如:/var/run/docker.sock:/var/run / ...

docker docker-compose daemon dind
1个回答
0
投票

所以我找到了一个解决方案,然后将其添加到基本的docker-组成具有TLS选项的存储区。

© www.soinside.com 2019 - 2024. All rights reserved.