リモートサーバーで実行されるDockerコンテナー内のコードを編集するために、Sublime Textに 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
Dockerコンテナーを終了し、リモートサーバーで同じ命令を実行すると、うまく動作します(または、少なくともエラーメッセージは表示されません)。この問題を解決するのを手伝ってもらえますか?必要に応じて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
編集:ホストOSについて尋ねられました。これは、リモートホスト上でのuname -a
とoutsideDockerコンテナ(サーバー名は削除)の結果です。
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
これは、Dockerコンテナ内でinsideを実行したときの同じコマンドの結果です:
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
を使用してリモートホスト上のファイルを編集します。変更を加えるたびに再構築する必要があるため、少し遅いですが、