Как подключить 2 контейнера к другому контейнеру по протоколу TCP в сети docker - PullRequest
1 голос
/ 24 марта 2020

У меня есть это прямо сейчас:

docker network rm cprev || echo;
docker network create cprev || echo;

docker run --rm -d -p '3046:3046' \
    --net=cprev --name 'cprev-server' cprev-server

docker run --rm -d -p '3046:3046' \
    -e cprev_user_uuid=111 --net=cprev --name 'cprev-agent-1' cprev-agent

docker run --rm -d -p '3046:3046' \
    -e cprev_user_uuid=222 --net=cprev --name 'cprev-agent-2' cprev-agent

в основном 2 cprev-агента должны подключаться к cprev-серверу через TCP. Проблема в том, что я получаю эту ошибку:

docker: ответ об ошибке от демона: драйвер не смог запрограммировать внешнее соединение на конечной точке cprev-agent-1 (6e65bccf74852f1208b32f627dd0c05b3b6f9e5e7f5611adfb04504ca8546.0.0 для 0.050) 0.011) 011) не удалось: порт уже выделен.

Я уверен, что это простое исправление, но, честно говоря, я не знаю, как разрешить двусторонний трафик c из двух контейнеров агента без использования одного и того же порта и т. д. c.

1 Ответ

1 голос
/ 24 марта 2020

Так что это сработало (используя --network = host), но мне интересно, как я могу создать собственную сеть, которая не мешает сети хоста ??

docker network create cprev;  # unused now

docker run --rm -d -e cprev_host='0.0.0.0' \
    --network=host --name 'cprev-server' "cprev-server:$curr_uuid"


docker run --rm -d -e cprev_host='0.0.0.0' \
    -e cprev_user_uuid=111 --network=host --name 'cprev-agent-1' "cprev-agent:$curr_uuid"

docker run --rm -d -e cprev_host='0.0.0.0' \
    -e cprev_user_uuid=222 --network=host --name 'cprev-agent-2' "cprev-agent:$curr_uuid"

, так или иначе, заставить это работать, используя мою собственную docker сеть "cprev"?

...