Две машины или Дружим 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