首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头使用:dind在码头-合成

码头使用:dind在码头-合成
EN

Stack Overflow用户
提问于 2020-06-11 15:54:13
回答 3查看 3.2K关注 0票数 3

因此,出于某种原因,我想使用一个码头:dind在一个码头-复合。use。我知道“轻松”的方法是直接在映像中挂载套接字(比如: /var/run/docker.sock:/var/run/docker.sock),但我想避免(出于安全原因)。

这是我的实验对接者-合成者。Here:

代码语言:javascript
复制
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

这里没有什么复杂的东西,然后我试着看看服务是否被正确设置:

代码语言:javascript
复制
docker logs dind

这里没有问题,它的启动和运行。但是,一旦我尝试使用它,例如:

代码语言:javascript
复制
docker run --rm -it --network net --link dind:docker docker version

我得到了以下错误:

代码语言:javascript
复制
Cannot connect to the Docker deamon at tcp://docker:2375. Is there a deamon running ?

你知道为什么院长没有回应吗?

编辑

在hariK的评论之后(顺便说一句),我将端口2376添加到公开的端口中。我想我还没解决好我的问题。下面是我得到的错误:

代码语言:javascript
复制
error during connect: Get http://docker:2375/v1.40/version dial tcp: lookup on docker on [ip]: no such host

因此,我查看了这个错误,发现它似乎是dind版本中反复出现的错误(就像这个上的gitlab有很多问题)。在gitlab 这里的类似问题上也有一篇关于堆栈溢出的文章。

为了解决这个问题,我试过:

  1. 将这个值DOCKER_TLS_CERTDIR: ""跳变关闭TLS .但失败了
  2. 将版本降级为码头:18.05-dind。它确实奏效了,但我不认为这是一个很好的举动。

如果有人有主意让TLS继续工作,那就太棒了:) (我仍然会自己看,但如果你能用有趣的链接轻轻推一下,那就太酷了^^)

EN

回答 3

Stack Overflow用户

发布于 2021-04-20 14:59:24

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

代码语言:javascript
复制
  dind:
    image: docker:dind
    container_name: dind
    privileged: true
    expose:
    - 2375
    environment:
    - DOCKER_TLS_CERTDIR=

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

票数 2
EN

Stack Overflow用户

发布于 2020-06-16 08:49:04

因此,我找到了一个解决方案,并将其添加到基本的停靠库中--使用TLS选项组成一个重注册。

因此,我有fisrt生成证书,然后正确地安装它们。

如果你们中的任何一个在类似的问题上运行,我为证书做了一个github回购,其中包含了docker和命令行。

票数 1
EN

Stack Overflow用户

发布于 2022-08-26 11:00:39

过了一段时间,我也在寻找同样的东西。下面是一个例子,对于特定版本的图像,这应该在几年后仍然有效:

代码语言:javascript
复制
version: '3'
services:

  docker:
    image: docker:20.10.17-dind-alpine3.16
    privileged: yes
    volumes:
      - certs:/certs

  docker-client:
    image: docker:20.10.17-cli
    command: sh -c 'while [ 1 ]; do sleep 1; done'
    environment:
      DOCKER_HOST: tcp://docker:2376
      DOCKER_TLS_VERIFY: 1
      DOCKER_CERT_PATH: /certs/client
    volumes:
      - certs:/certs

volumes:
  certs:

TLS证书在启动时由"docker“服务生成,并使用卷共享。

按以下方式使用客户端:

代码语言:javascript
复制
docker-compose exec docker-client sh

#now within docker-client container
docker run hello-world
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62328362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档