【问题标题】:docker-compose in docker-compose: Share networkdocker-compose 中的 docker-compose:共享网络
【发布时间】:2020-08-09 02:50:04
【问题描述】:

我知道通过将此卷 /var/run/docker.sock:/var/run/docker.sock 添加到 Using Docker-in-Docker for your CI or testing environment? 建议的 docker-compose 文件来共享 docker 套接字

我创建了这个简单的示例/实验设置,以便可以在 docker-compose 容器中启动 docker-compose,而无需共享所有内容。

docker-compose.yml

services:
  manager:
    build:
      context: ./manager
    privileged: true

  ngnix:
    image: nginx:latest

经理/Dockerfile

FROM nginx:latest

RUN apt-get -y update \
  && apt-get install -y iputils-ping docker-compose

RUN mkdir /app
WORKDIR /app

COPY . ./

ENTRYPOINT ["/app/entrypoint.sh"]

CMD ["ping", "www.google.com"]

ma​​nager/entrypoint.sh

#!/bin/sh

set -e
service docker start
exec "$@"

ma​​nager/docker-compose.yml

services:
  foobar:
    image: ruby:latest

现在可能的命令是:docker-compose up -d; docker-compose exec manager docker-compose run foobar /bin/bash

目前,我没有设法在主机和管理器上共享 docker-compose 网络。当然,这就是 docker 旨在按照设计工作的方式。因此在执行上述命令后,从foobar 容器中执行ping ngnix 将不起作用。

我的问题是:我怎样才能做到这一点?

我尝试以不同的方式将network: host添加到 manager/docker-compose.yml 中,但没有奏效,或者我太笨了,无法正确操作。

【问题讨论】:

  • 一般你不会尝试在容器内运行新的 Docker 守护进程;这很困难,可能会混淆您正在与哪个守护进程交谈,甚至官方文档也不鼓励它。请参阅official docker Docker Hub image,包括其扩展文档第一句中的“一般不推荐”行。
  • 如果你成功了,它将是一个完全独立的 Docker,有自己的网络、容器存储等 如果你想与宿主 Docker 共享东西,你可以必须通过绑定安装套接字来实际使用主机 Docker。

标签: docker docker-compose docker-networking


【解决方案1】:

正如 David Maze 指出的那样,唯一的解决方案可能是共享套接字。更多阅读信息请点击此处:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多