Попался вот тут интересный проект https://habr.com/ru/articles/1052536 — дай, думаю, потестирую, как оно работает?
А потестировать сходу нельзя, в релизах имеются разные сборки под разные платформы, вот только для моей arm64 (aarch64) нет.
Надо бы собрать — но оно написано на Rust, с Rust я не работаю, поэтому на компьютере ничего нужного для сборки нет, устанавливать всё это на настроенный компьютер как-то не очень хочется — но ведь можно сделать это в контейнере!
И получилась вот такая пошаговая инструкция:
Первым делом запускаем новый контейнер:
docker run -ti debian#
Устанавливаем всякое нужное и не очень:
apt updateapt upgradeapt install vim mc git curl build-essentialapt clean
Rust собирается через cargo — но как выяснилось, в пакетах cargo старый, а новый можно установить путем «скачай неизвестно что и запусти» — поэтому на всякий случай сделать это лучше под отдельным юзером:
adduser usersu -l usercurl https://sh.rustup.rs | shexitsu -l user
«Что-то» скачалось, и установило программы в домашнем каталоге юзера user.
А вот это exit & su -l user — для того чтобы перелогиниться и подхватить нужные переменные окружения.
Дальше — скачиваем сам проект, и следуя гайду по сборке — собираем:
git clone https://github.com/litvinovtd/qeli qeli_vpncd celi_vpn/qelicargo build --release
Ура! всё собралось, в target/release появился готовый бинарник!
Вытащить его из контейнера можно разными способами, например прямо изнутри через Midnight: просто открыть по sftp свою же рабочую машину: cd sh://username@ip_addr/home/username и скопировать бинарник и каталог с примерами.
Можно конечно и scp … — но в панельках нагляднее, проще ориентироваться в незнакомом каталоге.
Выходим из контейнера, запускаем…
./qeli./qeli: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.39' not found (required by ./qeli)
Не ура. Не работает. А не работает оно потому, что на рабочей машине Debian bookworm, а в контейнере Debian trixie, и разные версии библиотек.
Фальшстарт, надо пересобрать:
docker run -ti debian:bookworm... далее по тексту ...
Вот теперь — запускается и работает.
В реальных условиях — для организации каналов между серверами во внешнем мире — потестирую его попозже, но это уже другая история.
Собственно говоря, это всё к тому «зачем нужно собирать что-то в контейнерах, когда можно собирать сразу на рабочей машине!» — да вот как раз затем: на рабочей машине, и на рабочих серверах могут быть вообще разные версии ОС и разные архитектуры, и контейнеры позволяют сделать нужную версию и туда и сюда.
ссылка на оригинал статьи https://habr.com/ru/articles/1052692/