Я нашел другой способ достичь своей конечной цели - получить доступ к веб-интерфейсу одного из контейнеров Docker. Я закончил настройкой SOCKS v5 прокси через SSH. Это действительно предназначено только для целей разработки и отладки и не должно использоваться в производственной ситуации. Я не несу ответственности за последствия безопасности запуска sshd от имени пользователя root в контейнере Docker. Убедитесь, что вы понимаете последствия этого.
Шаги, которые я предпринял, перечислены ниже. В этом примере рассмотрим, centosec2
является ли мой сервер EC2 под управлением CentOS, myappcontainer
это имя контейнера, на котором выполняется приложение, в котором размещен веб-интерфейс, к my-net
которому я пытаюсь получить доступ, и имя оверлейной сети, в myappcontainer
которой выполняется.
Требования:
- Браузер, который можно настроить для подключения через прокси-сервер SOCKS v5. Я предлагаю Firefox с надстройкой FoxyProxy, потому что он делает включение и отключение прокси очень простым.
- Образ Docker, который может работать
sshd
. Я использовал https://hub.docker.com/r/macropin/sshd/
шаги:
Порт перенаправить порт с вашего ноутбука на сервер. В этом примере 8888 будет портом, на котором работает прокси-сервер SOCKS с точки зрения вашего ноутбука, а 9696 будет перенаправленным портом на сервере.
[user@laptop ~]$ ssh -L 8888:localhost:9696 centosec2 -N
В другой оболочке откройте обычный сеанс ssh с сервером, а затем запустите
sshd
контейнер. Убедитесь, чтоsshd
контейнер работает в той же сети, что и контейнер с веб-интерфейсом пользователя.[пользователь @ ноутбук ~] $ ssh centosec2 [user @ centosec2 ~] $ docker run --rm -d -p 2222: 22 --network my-net -v .ssh / id_rsa.pub: /root/.ssh/authorized_keys macropin / sshd
Как только
sshd
контейнер запустится, используйте ту же оболочку, чтобы ssh войти вsshd
контейнер и запустить прокси-сервер SOCKS на порту, перенаправляемом на ваш ноутбук.-D 9696
говорит ssh запустить сервер SOCKS на порту 9696.[user@centosec2 ~]$ ssh -D 9696 -p 2222 root@localhost -N
Теперь ваш ноутбук может получить доступ к сети докеров через прокси-сервер SOCKS, работающий через порт 8888. Настройте свой браузер для подключения к Интернету через прокси-сервер SOCKS v5, работающий на нем
localhost:8888
. После этого вы сможете перейти к веб-интерфейсу, используя имя хоста контейнера Docker.http://myappcontainer:8080
Это много прыжков, но это был самый простой способ понять, как это сделать. Надеюсь, это поможет кому-то еще.