Я хочу использовать пакет rsub для Sublime Text, чтобы редактировать код внутри контейнера Docker, который работает на удаленном сервере. Однако, когда я выполняю
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
Если я выйду контейнер Docker и выполнить ту же инструкцию на удаленном сервере, он работает хорошо (или, по крайней мере, он не дает мне никаких сообщений об ошибках). Можете ли вы помочь мне исправить эту проблему? При необходимости я могу изменить файл Docker.
EDIT: Я включаю часть скрипта 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
EDIT : меня спрашивали об ОС хоста. Это результат uname -a, когда на удаленном хосте и вне контейнера Docker (имя сервера удалено):
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 - разные строки. Кроме того, когда внутри контейнера Docker я не могу найти директорию tcp внутри каталога dev:
root@7f199087c883:~# ls /dev/tcp
ls: cannot access '/dev/tcp': No such file or directory
В конце концов, поскольку rsub работал на удаленном хосте, самым простым решением было:
войти на удаленный хост (без запуска контейнера) использовать rsub для редактирования любого файлы на удаленном хосте, в сеансе Sublime на моем локальном компьютере, затем снова создайте контейнер.Это немного медленно, потому что каждый раз, когда я вношу изменения, мне нужно перестроить, но:
войдите на удаленный хост (без запуска контейнера) это лучший способ работать в любом случае: каждый раз, когда я вношу изменения в проект, я должен перестроить контейнер в любом случае. Это побуждает меня совершать изменения чаще, что всегда является хорошей идеей :-)В конце концов, поскольку rsub работал на удаленном хосте, самым простым решением было:
войти на удаленный хост (без запуска контейнера) использовать rsub для редактирования любого файлы на удаленном хосте, в сеансе Sublime на моем локальном компьютере, затем снова создайте контейнер.Это немного медленно, потому что каждый раз, когда я вношу изменения, мне нужно перестроить, но:
войдите на удаленный хост (без запуска контейнера) это лучший способ работать в любом случае: каждый раз, когда я вношу изменения в проект, я должен перестроить контейнер в любом случае. Это побуждает меня совершать изменения чаще, что всегда является хорошей идеей :-)В конце концов, поскольку rsub работал на удаленном хосте, самым простым решением было:
войти на удаленный хост (без запуска контейнера) использовать rsub для редактирования любого файлы на удаленном хосте, в сеансе Sublime на моем локальном компьютере, затем снова создайте контейнер.Это немного медленно, потому что каждый раз, когда я вношу изменения, мне нужно перестроить, но:
войдите на удаленный хост (без запуска контейнера) это лучший способ работать в любом случае: каждый раз, когда я вношу изменения в проект, я должен перестроить контейнер в любом случае. Это побуждает меня совершать изменения чаще, что всегда является хорошей идеей :-)