Две машины или Дружим VSCode с Docker за SSH

Две машины или Дружим VSCode с Docker за SSH

Антон

Простите, я уже начал называть посты с переиначиванием Толкина и я не могу остановиться, потому что не начать я уже не могу.

Дружим VSCode с Docker за SSH

В прошлом посте я подключил VSCode к докеру для C++ разработки, но не научился подключаться к докеру за ssh, а это, оказывается, несложно. Нужно использовать ssh docker context вместо локального:

docker context create remote-context-name --docker "host=ssh://user@host"
docker context use remote-context-name

А чтобы вернуться обратно нужено сделать use default.

Теперь можно подключаться к докеру на сервере со своей машины, а как этим пользоваться можно посмотреть тут.

Ах да, топ фича с которой вам теперь не нужно знать vim - VSCode умеет подключаться по SSH и править файлы. Нужен только плагин Remote SSH.

X11 в Docker за SSH

Мои вкусы специфичны и в процессе разработки приходится показывать себе всякие картинки, да и OpenGL нужен, поэтому без иксов никак.

Я нашел, как мне кажеся не самое элегантное решение, но оно работает.

Нам нужно чтобы ssh не рвал сессию и локальный X server был доступен удаленной машине. Сначала дописываем локальный /etc/ssh/ssh_config:

Host *
ServerAliveInterval 10
ForwardX11 yes

Подключаемся:

ssh -YC user@host

Теперь стартуем контейнер, в который нужно перепрокинуть иксы, которые мы прокинули по ssh:

export DOCKER_DISPLAY="$(ip route get 1 | awk '{print $NF;exit}'):${DISPLAY#*:}"
docker run -d --name=dev-container --entrypoint=tail -e DISPLAY=$DOCKER_DISPLAY dockerhost:container-tag -f /dev/null

Осталось авторизоваться на X server внутри контейнера:

docker exec dev-container xauth add $(xauth list $DISPLAY)

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

Теперь всё готово к работе, можно проверять:

docker exec -ti dev-container bash -c 'apt update && apt install x11-apps -y && xclock'

Теперь со своего макбука я имею возможность засрать сразу 252 ГБ оперативной памяти и компилировать во все 32 ядра, ура!

Подписывайтесь https://t.me/ithueti

Для связи https://t.me/antonso

Report Page