Не может присвоить адрес в контейнере Докера

Я хочу использовать rsub пакет для Сублимированного текста для редактирования кода в контейнере Докера, который работает на удаленном сервере. Однако, когда я выполняюсь

rsub my_code.py

Я получаю ошибку:

/usr/local/bin/rsub: connect: Cannot assign requested address
/usr/local/bin/rsub: line 392: /dev/tcp/localhost/52698: Cannot assign requested address

Строка 392 в основном соответствует этой инструкции:

exec 3<> "/dev/tcp/localhost/52698"
bash: connect: Cannot assign requested address
bash: /dev/tcp/localhost/52698: Cannot assign requested address

Если я выхожу из контейнера Докера и выполняю ту же инструкцию относительно удаленного сервера, это работает приятно (или по крайней мере это не дает мне сообщений об ошибках). Можно ли помочь мне решить эту проблему? Я могу изменить Dockerfile в случае необходимости. Я могу также отправить его здесь, если Вы думаете, что это необходимо, но я должен доктор это немного прежде для удаления уязвимой информации.

Править: Я включаю часть rsub сценарий, который повышает ошибку. Обратите внимание на это в этой точке в сценарии, $host=localhost и $port=52698. Я проверил это дважды с echo операторы.

# connect to textmate and send command
#
exec 3<> "/dev/tcp/$host/$port"

if [ $? -gt 0 ]; then
    echo "Unable to connect to TextMate on $host:$port"
    exit 1
fi

read -r server_info 0<&3

log $server_info

for i in "${!filepaths[@]}"; do
    open_file "$i"
done

echo "." 1>&3

if [[ $nowait = true ]]; then
    exec </dev/null >/dev/null 2>/dev/null
    ( (handle_connection &) &)
else
    handle_connection
fi

Править: Меня спросили о хосте ОС. Это - результат uname -a когда на удаленном хосте, и вне контейнера Докера (удаленное имя сервера):

Linux xxxxxxx 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

и это - результат той же команды, когда выполнено в контейнере Докера:

Linux yyyyyyyyy 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

xxxxxxx и yyyyyyy различные строки. Кроме того, когда в контейнере Докера, я не могу найти каталог tcp в dev каталог:

root@7f199087c883:~# ls /dev/tcp
ls: cannot access '/dev/tcp': No such file or directory
3
задан 18 May 2018 в 19:29

1 ответ

В конце, с тех пор rsub работал над удаленным хостом, простое решение было к:

  • войдите в систему удаленного хоста (не запуская контейнер)
  • использовать rsub отредактировать любые файлы на удаленном хосте, на сессии Сублимата на моем локальном ПК
  • затем создайте контейнер снова.

Это немного медленно, потому что каждый раз я вношу изменения, которые я должен восстановить, но:

  • удаленный хост имеет много вычислительной силы, таким образом восстанавливание быстро;
  • это - лучший способ работать так или иначе: каждый раз, когда я передаю изменения в проекте, я должен восстановить контейнер так или иначе. Это предлагает мне фиксировать изменения чаще, который всегда является хорошей идеей :-)
3
ответ дан 1 December 2019 в 16:17

Другие вопросы по тегам:

Похожие вопросы: