TCP — соединение между контейнерами docker

#docker

Вопрос:

У меня есть сервер, прослушивающий порт 6000 внутри контейнера docker, и я открыл порт 6000 в файле dockerfile:

 FROM rust:latest  WORKDIR /usr/src/server  COPY . .  RUN cargo install --path .  EXPOSE 6000  RUN cargo run  

затем запустите его с помощью:

 docker build -t server docker run --rm -it -p 6000:6000 server  

Затем у меня есть клиент в другом контейнере, пытающийся установить tcp-соединение на порту 6000, но он не может подключиться. Когда они оба работают не в контейнерах, они не могут подключаться без проблем, но попытка использовать docker вызывает проблемы. Нужно ли мне что-то делать с контейнером моих клиентов, чтобы подключиться к порту 6000 за пределами его собственного контейнера? Я думаю, что это, вероятно, очень простая проблема, я просто новичок в докере, поэтому буду очень признателен за любую помощь.

Ответ №1:

RUN Команда выполняется во время сборки, я думаю, что вместо этого вы ищете CMD. Также РАЗОБЛАЧЕНИЕ не является необходимым, оно служит только документальным целям. Наконец, вам нужно проверить, запущен ли вообще контейнер, прежде чем пытаться получить к нему доступ от клиента. Сделайте docker ps -a это после запуска сервера и посмотрите на состояние контейнера. Если он не запущен, вы можете проверить журналы с docker logs lt;container name / hashgt; помощью . Дайте мне знать, если у вас возникнут вопросы.