docker -составить в docker -составить: Поделиться сетью - PullRequest
0 голосов
/ 25 апреля 2020

Мне известно о совместном использовании сокета docker путем добавления этого тома /var/run/docker.sock:/var/run/docker.sock в docker -компонентный файл, как предложено Использование Docker -in- Docker для вашей CI или среды тестирования ?

Я создал этот простой пример / экспериментальную настройку, чтобы можно было запускать docker -композицию в docker -компонованном контейнере без совместного использования всего.

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"]

менеджер / точка входа. sh

#!/bin/sh

set -e
service docker start
exec "$@"

manager / docker -compose.yml

services:
  foobar:
    image: ruby:latest

Возможная команда теперь будет: docker-compose up -d; docker-compose exec manager docker-compose run foobar /bin/bash

Для теперь мне не удалось разделить docker -композитную сеть между хостом и сетью на диспетчере. Это, конечно, то, как docker предназначен для работы на дизайн. Поэтому после выполнения указанной выше команды выполнение ping ngnix из контейнера foobar не будет работать.

Мой вопрос: как я могу сделать эту работу?

Я пытался добавить network: host к менеджеру / docker -compose.yml по-разному, но это не сработало, или я был слишком глуп, чтобы сделать это правильно.

1 Ответ

0 голосов
/ 26 апреля 2020

Как указывает Дэвид Мэйз, возможно, единственное решение - поделиться розеткой. Подробнее об этом читайте здесь:

...