#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;
помощью . Дайте мне знать, если у вас возникнут вопросы.