У меня есть несколько докеров-контейнеров, которые будут работать вместе отлично на одной машине. Один привязывается к порту 80, другой подключается к контейнеру neo4j, который также развернут. Остальные для межконтейнерной работы (я их не строил, но я должен их разместить). У меня есть настройка док-станции с докером-движком 1.12 и кластером progrium/consul на трех машинах в рое. Консольный кластер может видеть все контейнеры, и они работают при использовании только запуска -d (на каждом отдельном хосте, как указано). Как только я вывожу их из «службы», они больше не могут общаться. Я попытался создать новую оверлейную сеть, но это не повлияло.докер-контейнер против ройной связи вопрос
Я также попытался запустить один контейнер, который связывается с портом 80 как отдельный контейнер на всех системах, где остальные работают как службы. Проверка Docker показывает их все в той же сети 172.17.0.0.
Я действительно мог бы использовать некоторые идеи о том, что посмотреть. Благодарю.
Во-первых, я загрузить Neo4j с:
docker run -d -p 192.168.2.201:7474:7474 \
--volume=$HOME/neo4j/data:/data neo4j:3.0
Затем последующие контейнеры присоединения к консулом кластера на DOCKER рой с помощью:
docker run -d -e "CONSULJOIN=172.17.0.2" -e "NEO4J_HOST=172.17.0.4" \
-e "NEO4J_PASSWORD=$NEO4J_PASS" container
Когда вместо docker run -d
я использую docker create service
, ожидание заключается в том, что если я заменил IP-адрес neo4j на 192.168.2.201, он должен работать.
Я также попытался с помощью наложенных сетей:
docker network create -d overlay my-net
И включил --net = мою-сеть в команде докера службы. Я не знаю, когда у меня будет время для дальнейшего отладки, но если этого достаточно, чтобы хотя бы сказать мне, что я сделал неправильно, это было бы здорово. Если нет, я попытаюсь получить дополнительную информацию по мере того, как позволяет время.
Включите в себя команды, которые вы используете, включая команды создания сети и службы, а также любой вывод отладки. – BMitch
Таким образом, эти системы находятся на внутренних виртуальных машинах. Во-первых, я загружаю neo4j с помощью: docker run -d -p 192.168.2.201:7474:7474 --volume = $ HOME/neo4j/data:/data neo4j: 3.0. Затем последующие контейнеры соединяют кластер consul на рое докеров, используя: docker run -d -e «CONSULJOIN = 172.17.0.2» -e «NEO4J_HOST = 172.17.0.4» -e «NEO4J_PASSWORD = $ NEO4J_PASS» контейнер. Когда вместо запуска docker -d я использую службу создания докеров, ожидается, что если я заменил IP-адрес neo4j на 192.168.2.201, он должен работать. К сожалению, я должен также указать, что, хотя я уже некоторое время в администрации Linux, я новичок в докере. –
Я обновил вопрос с вашим комментарием выше. Не могли бы вы также отредактировать с помощью команды создания сети, которую вы пытались сделать? Под обложками Docker создает мостовые сети и контролирует доступ с помощью iptables, поэтому вы можете использовать стандартный набор инструментов Linux для отладки. Подключитесь к оболочке bash в любом контейнере с помощью 'docker exec -it/bin/bash' для дальнейшей отладки. –
BMitch