Как подключить VSCode к удаленному контейнеру Docker при настройке правильного пользователя - PullRequest
0 голосов
/ 12 октября 2019

Я запускаю контейнер Docker со специальным сценарием bash, который запускает контейнер, а затем создает пользователя X с динамическим именем, UID и GUID в контейнере. Затем я могу зайти в контейнер и выполнить действия от имени этого пользователя X. Сценарий также создает пользователя с псевдонимом vscode с тем же UID, что и ранее созданный динамический пользователь X.

В VSCode я могу присоединиться кэтот контейнер. Два вопроса:

  1. Как настроить VSCode для выполнения всех действий от имени пользователя vscode или пользователя X? (При использовании devcontainer.json для создания контейнера это тривиально, но теперь я присоединяюсь к существующему контейнеру, а devcontainer.json не используется).
  2. В devcontainer.json у вас есть возможность автоматически устанавливать расширения. Какой файл настроек мне нужно создать для автоматической установки расширений при подключении к контейнеру?

Решение должно быть автоматизировано. Например. ручное вмешательство и фиксация изображения, как предложено ниже, возможно, но пользователям будет намного сложнее просто использовать мой образ Docker.

Я обновился до vscode 1.39 и попытался добавить:

ADD server-env-setup /root/.vscode-server/server-env-setup

Но «server-env-setup», похоже, используется только для WSL.

1 Ответ

1 голос
/ 12 октября 2019

Я отвечу на ваши вопросы в обратном порядке:

VSCode устанавливает расширения после создания контейнера с помощью команды docker exec.

А теперь рецепт: Самый простой способ - взять контейнеруже создан VSCode:

  1. Запустите «Открыть папку на контейнере» для создания контейнера dev.
  2. После завершения контейнера и работы с VSCode. Остановите свою среду, нажав «Закрыть удаленное соединение».
  3. Выполнить docker ps -a. Вы должны увидеть последние умершие контейнеры, например: last running docker images
  4. Как вы можете увидеть последний запущенный контейнер: a7aa5af7ec08 vsc-typescript-2ea9f347739c5397afc431028000c02b. Это ваш контейнер со всеми установленными расширениями. И не имеет значения, как вы устанавливаете расширения вручную или путем настройки с помощью devcontainer.json.
  5. Запустите docker commit a7aa5af7ec08 all-installed-vscode-image:latest. Теперь у вас есть образ докера со всем вашим любимым программным обеспечением. Вы можете загрузить это изображение в ваш любимый реестр докеров и использовать его также на других машинах.
  6. Теперь вы можете запустить docker run -i -u vscode all-installed-vscode-image:latest. И прикрепите vscode к этому контейнеру. Это ответ на ваш первый вопрос.

Кроме того, вы можете просмотреть документацию vscode и использовать конфигурации devcontainer.json при подключении к уже работающим контейнерам и даже контейнерам, работающим на удаленные машины .

...