У меня есть сервер PostgreSQL через Интернет в лабораторной сети. В настоящее время я использую ssh для подключения к нему. Однако я хотел бы, чтобы докер Adminer в моей локальной сети был подключен к серверу. Можно ли создать перенаправление порта, чтобы докер мог подключиться к порту на моем локальном компьютере, который перенаправляет меня в службу PostgreSQL?
Я считаю, что эта команда ssh может работать, но не уверен, я также хотел бы краткое объяснение того, как она работает: ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain
Небольшая диаграмма, представляющая сценарий:
Команда, которую вы показываете, сделает порт 5432 myserverdomain доступным на порту 5000 на машине, на которой вы выполняете команду.
Он должен работать, но (если я прав), поскольку вы запускаете команду на своем хосте, а не в контейнере Docker, по умолчанию контейнер Adminer не сможет достичь порта 5000 на хост-машине (Docker контейнеры, работающие через мостовую сеть, не могут достичь портов хост-машины). Таким образом, вы можете запустить команду ssh в контейнере (Я сделал один который выполняет переадресацию портов ssh), или просто запустите контейнер Adminer с сетевым «хостом».
Наконец, вы можете использовать модификатор -N в команде SSH, чтобы не открывать интерактивный сеанс, и просто запустить порт вперед. И вы даже можете использовать autossh для повторного подключения, если соединение разрывается.
Это инициирует соединение с myserverdomain и перенаправляет все на localhost (который снова является myserverdomain) порт 5000 на порт 5432 на myserverdomain (localhost).
По сути, вы перенаправляете трафик с localhost 5000 на localhost 5432.
ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain