Как открыть порт, который динамически меняется в Podman

Я пытаюсь настроить контейнерную систему удаленной разработки с Fleet в качестве IDE.

У меня есть рабочая станция Rocky Linux 9.3, выступающая в качестве сервера с установленным на ней Podman, и я запускаю Fedora 39 в контейнерах. Я подключаюсь с помощью своего настоящего компьютера, на котором установлен Fleet (Mac).

После выполнения инструкций, изложенных здесь: https://www.jetbrains.com/help/fleet/install-on-a-remote-machine.html

Я получаю следующий результат:

Applying new dynamic config FleetLogConfiguration(refreshTimeout=30, default=WARN, perTarget = {}, loggers=[Entry(loggerName=fleet, default=null, perTarget = {CONSOLE=WARN, FILE=INFO}), Entry(loggerName=noria, default=null, perTarget = {CONSOLE=WARN, FILE=INFO})])
Dock HTTP Api listening to 127.0.0.1:34605
Workspace Server listening to 127.0.0.1:39054
- UID: XXXXXXXXXXXX
- Host ID: XXXXXXXXXXXX
- Lobby Address: https://lobby.fleet.api.jetbrains.com:XXX
- Version: 1.34.94
- Smart Mode: enabled
- Published to JetBrains Relay: true
- Join this workspace using URL: https://fleet.jetbrains.com/?version=1.34.94&workspaceId=XXXXXXXXXX

Порты «Прослушивание Dock HTTP Api» и «Прослушивание сервера рабочей области» меняются каждый раз, когда я запускаю команду ./fleet launch workspace.

У меня есть возможность подключиться через веб-реле или SSH. Я хотел бы попробовать SSH, потому что веб-реле немного подтормаживает.

Итак, по сути, мне нужно найти способ предоставить (динамический) порт, который прослушивает демон Fleet, моей локальной сети, чтобы я мог подключиться, выполнив следующие действия:

https://www.jetbrains.com/help/fleet/connect-to-workspace.html

Две вещи, с которыми у меня возникли проблемы:

  1. Как сопоставить динамический порт, который меняется каждый раз, когда я запускаю демон, с портом, предоставляемым Podman
  2. Как открыть порт Podman для сети, чтобы я мог подключиться из приложения Fleet на моем локальном компьютере

Podman позволяет совместно использовать контейнер и хост-сети с помощью --net=host или сопоставлять каждый активный порт внутри контейнера со случайным портом в хост-сети с помощью --publish-all, но я предпочитаю иметь дело с вещами внутри контейнера, чтобы можно было воспроизвести среду разработки. используя файл-контейнер.

Я новичок в сетевых технологиях, поэтому прошу прощения за ошибки в моем объяснении, если у кого-то есть хорошее начало, я буду очень признателен.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документации, на которую вы дали ссылку, вы можете использовать параметры --workspaceHost и --workspacePort, чтобы установить адрес и порт, который прослушивает сервер рабочей области:

fleet launch workspace -- --workspaceHost 0.0.0.0 --workspacePort 4321

Посмотрите, позволяет ли установка статического порта сервера рабочей области успешно подключиться. Кажется, не существует способа управления портом http api док-станции, но, возможно, в этом нет необходимости.


Если я запустил указанную выше команду внутри контейнера podman...

podman run --rm --name fleet -p 4321:4321 my-fleet-image \
  fleet launch workspace -- \
    --workspaceHost 0.0.0.0 \
    --workspacePort 4321

...тогда я смогу успешно подключиться к серверу рабочей области как с локальной рабочей станции, так и с других систем в той же сети.

Если вам это не подходит, я бы начал с просмотра правил брандмауэра вашей локальной рабочей станции.

Большое спасибо, не могу поверить, что пропустил это, ха-ха. Это хорошо подходит для решения проблемы 1: порт статический, и теперь, если я запущу контейнер Podman и вставлю сопоставление портов -p 4321:4321, этот порт будет доступен за пределами контейнера на главной рабочей станции. К сожалению, я до сих пор не могу подключиться со своего локального компьютера, используя IP-адрес рабочей станции и порт 4321. Если я запустил netstat -n | grep 4321, я получу tcp6 0 0 :::4321 :::* LISTEN. Нужно ли мне что-либо настраивать на главной рабочей станции?

Matt.M.888 22.05.2024 06:00

Вывод netstat выглядит нормально. Я обновил ответ, чтобы показать, что именно сработало для меня.

larsks 22.05.2024 13:39

Итак, я выполнил новую установку Fedora Server 40 и попробовал еще раз с нуля, но безуспешно. Это должен был быть быстрый тест, поэтому я оставлю его там. Однако ваш ответ отвечает на мой первоначальный вопрос (открытие статического порта для моей сети), возможно, что-то происходит с автопарком или я что-то неправильно настраиваю.

Matt.M.888 07.06.2024 12:04

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