Я пытаюсь настроить контейнерную систему удаленной разработки с 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
Две вещи, с которыми у меня возникли проблемы:
Podman позволяет совместно использовать контейнер и хост-сети с помощью --net=host
или сопоставлять каждый активный порт внутри контейнера со случайным портом в хост-сети с помощью --publish-all
, но я предпочитаю иметь дело с вещами внутри контейнера, чтобы можно было воспроизвести среду разработки. используя файл-контейнер.
Я новичок в сетевых технологиях, поэтому прошу прощения за ошибки в моем объяснении, если у кого-то есть хорошее начало, я буду очень признателен.
Согласно документации, на которую вы дали ссылку, вы можете использовать параметры --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
...тогда я смогу успешно подключиться к серверу рабочей области как с локальной рабочей станции, так и с других систем в той же сети.
Если вам это не подходит, я бы начал с просмотра правил брандмауэра вашей локальной рабочей станции.
Вывод netstat выглядит нормально. Я обновил ответ, чтобы показать, что именно сработало для меня.
Итак, я выполнил новую установку Fedora Server 40 и попробовал еще раз с нуля, но безуспешно. Это должен был быть быстрый тест, поэтому я оставлю его там. Однако ваш ответ отвечает на мой первоначальный вопрос (открытие статического порта для моей сети), возможно, что-то происходит с автопарком или я что-то неправильно настраиваю.
Большое спасибо, не могу поверить, что пропустил это, ха-ха. Это хорошо подходит для решения проблемы 1: порт статический, и теперь, если я запущу контейнер Podman и вставлю сопоставление портов
-p 4321:4321
, этот порт будет доступен за пределами контейнера на главной рабочей станции. К сожалению, я до сих пор не могу подключиться со своего локального компьютера, используя IP-адрес рабочей станции и порт 4321. Если я запустилnetstat -n | grep 4321
, я получуtcp6 0 0 :::4321 :::* LISTEN
. Нужно ли мне что-либо настраивать на главной рабочей станции?