Открытие контейнеров на удаленных узлах SSH с помощью VSCode

Использование пакета расширений Remote Development, Visual Studio Код может открыть контейнер Docker, работающий в текущей системе, и открыть папку на удаленном хосте, подключенном с помощью SSH.

Если на удаленном узле SSH запущен контейнер Docker, как VSCode может открыть файл / папку в этом контейнере?


person Nyxynyx    schedule 12.01.2020    source источник


Ответы (1)


Итак, вы хотите открыть папку внутри контейнера на удаленном SSH-сервере. Ниже приведены шаги, с помощью которых я этого добился.

Шаг 1

установить расширение Remote Development в VSCode и открыть его панель управления

введите описание изображения здесь

Шаг 2

Подключите VSCode к удаленному SSH-серверу

введите описание изображения здесь

Шаг 3

После подключения вы заметите зеленую галочку, означающую, что вы подключены к удаленному серверу. Теперь выберите Контейнеры в раскрывающемся списке Remote Explorer. Вы увидите список контейнеров. Если вы не видите список контейнеров или видите список локальных контейнеров, следуйте инструкциям, в противном случае переходите к шагу 4.

введите описание изображения здесь

Шаг 3.1

Добавьте новый контекст в свой докер, выполнив следующие команды в терминале.

$ docker context create my-remote-docker-machine --docker "host=ssh://username@host:port"

$ docker context ls

$ docker context use my-remote-docker-machine

Шаг 3.2

$ docker ps -a

Вы заметите, что в приведенной выше команде перечислены все контейнеры с удаленного сервера (это из-за контекста, который вы только что добавили)

Давайте вернемся к VScode сейчас, нажмите Docker в меню боковой панели, вы увидите предупреждение Не удалось подключиться. Docker работает? узнать больше об этой ошибке

введите описание изображения здесь

Устранение неполадок

Убедитесь, что на удаленном компьютере установлено расширение Docker. По состоянию на февраль 2020 г. в VS Code обнаружена ошибка, препятствующая установке расширения Docker. удаленно, если он уже установлен локально. Эту ошибку планируется исправить в выпуске VS Code 1.43. Обходной путь для удаленной установки расширения описан здесь .

  • Удалите расширение Docker из VS Code. Закройте все окна VS Code.
  • Снова запустите VS Code. Используйте Remote-SSH: Connect to Host .. для подключения к удаленному компьютеру.
  • Откройте магазин расширений и установите расширение Docker на удаленный компьютер (см. Снимок экрана ниже)

введите описание изображения здесь

  • После удаленной установки расширения Docker его также можно установить локально.

Шаг 4

Из списка контейнеров выберите целевой контейнер, к которому вы хотите подключить VSCode.

введите описание изображения здесь

Шаг 5

Вала! VSCode подключен к контейнеру на удаленном сервере, вы можете нажать на проводник, выбрать любую папку / каталог внутри контейнера и начать работу в этом каталоге.

введите описание изображения здесь

person Hamid Ali    schedule 26.06.2020
comment
Выбор «Контейнеры» на шаге 3 приводит к списку контейнеров на локальном компьютере, а не на удаленном. Как мы можем составить список контейнеров удаленной машины? - person Anoop K. Prabhu; 01.07.2020
comment
@ AnoopK.Prabhu убедитесь, что ваше соединение с удаленным сервером успешно - person Hamid Ali; 01.07.2020
comment
Да, это так. также отображается зеленый символ. ibb.co/D1HW3Vw - это то, что я вижу после успешного подключения к удаленному компьютеру. В противном случае я мог бы найти докеры на моем локальном компьютере - person Anoop K. Prabhu; 01.07.2020
comment
@ AnoopK.Prabhu, поэтому я узнал, что мой хост докера уже настроен на удаленный, это основная причина, по которой он работал у меня. Но затем я попытался воспроизвести ваш вариант использования, подключившись к другому удаленному серверу. Я делюсь своими выводами, обновляя ответ. Пожалуйста, взгляните на это. Жду отзывов. - person Hamid Ali; 04.07.2020
comment
Обновленный ответ сработал для меня. На самом деле мне пришлось немного изменить для себя, поскольку удаленная машина находилась за VPN с паролем и двухэтапной аутентификацией. Это затрудняло использование «контекста докера». Разобраться с этим помогла перенаправление портов docker.sock. - person Anoop K. Prabhu; 06.07.2020
comment
Отлично !, @ AnoopK.Prabhu не стесняйтесь принять этот ответ, чтобы другие тоже могли последовать за ним. Спасибо. - person Hamid Ali; 07.07.2020