Я работаю над распределенной вычислительной системой, которая пытается запустить рабочие узлы при запуске для автономного экземпляра, для этого требуется netcat. Системе требуется операционная система Linux, но у меня есть макросы, поэтому я пытаюсь собрать и запустить все через докер-контейнер, который работает в Ubuntu. Я медленно пытаюсь понять, как все это работает, и я чувствую, что в целом было бы замечательно, если бы эта система была докернизирована, так как кажется, что она будет иметь минимальный или даже незначительный удар по производительности из того, что я исследовал.
Тем не менее, у меня возникли проблемы с работой Netcat. Начальный скрипт для запуска имеет строку, которая запускает команду netcat следующим образом:
nc -zw3 localhost 22
Каждый раз, когда я не могу подключиться к IP localhost: XXXX (порт, который должен прослушивать рабочий узел), что означаетпопытка прослушивания через netcat не удалась. Я попробовал несколько различных решений в Интернете, чтобы посмотреть, смогу ли я это исправить. Я перечислил эти попытки ниже.
Контекст
Как я запускаю Docker:
docker-machine start default
docker-machine env default
eval $(docker-machine env default)
И я уже какое-то время создалсам контейнер:
alias create_linux_container ="docker run \
--name name_of_project \
-e HOST_IP=$(ifconfig en0 | awk '/ *inet /{print $2}') \
-v /Users/myname/Desktop/docker:/name_of_project \
-t -i \
ubuntu /bin/bash"
Итак, обычно, когда я снова запускаю контейнер, я просто запускаю:
alias linux_container ="docker exec -it name_of_project /bin/bash"
Версия netcat:
netcat version: v1.10-41.1
Версия ОС для контейнера:
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Попытки
Я пытался заменить localhost на IP-адрес, полученный из обоих:
echo $(ifconfig en0 | awk '/ *inet /{print $2}')
и
docker inspect ${CONTAINER_ID} | grep IPAddress
Я также попытался полностью заменить команды на:
nc -zw3 -l -p 22
Но это просто время ожидания.