Мне известно о совместном использовании сокета 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 по-разному, но это не сработало, или я был слишком глуп, чтобы сделать это правильно.