惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
腾讯CDC
D
Docker
The Cloudflare Blog
量子位
爱范儿
爱范儿
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
Vercel News
Vercel News
MyScale Blog
MyScale Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Docker как место для сборки
JBFW · 2026-06-28 · via Все публикации подряд на Хабре

Простой

2 мин

1.3K

Попался вот тут интересный проект https://habr.com/ru/articles/1052536 - дай, думаю, потестирую, как оно работает?

А потестировать сходу нельзя, в релизах имеются разные сборки под разные платформы, вот только для моей arm64 (aarch64) нет.
Надо бы собрать - но оно написано на Rust, с Rust я не работаю, поэтому на компьютере ничего нужного для сборки нет, устанавливать всё это на настроенный компьютер как-то не очень хочется - но ведь можно сделать это в контейнере!

И получилась вот такая пошаговая инструкция:

Первым делом запускаем новый контейнер:

docker run -ti debian
#

Устанавливаем всякое нужное и не очень:

apt update
apt upgrade
apt install vim mc git curl build-essential
apt clean

Rust собирается через cargo - но как выяснилось, в пакетах cargo старый, а новый можно установить путем "скачай неизвестно что и запусти" - поэтому на всякий случай сделать это лучше под отдельным юзером:

adduser user
su -l user
curl https://sh.rustup.rs | sh
exit
su -l user

"Что-то" скачалось, и установило программы в домашнем каталоге юзера user.
А вот это exit & su -l user - для того чтобы перелогиниться и подхватить нужные переменные окружения.

Дальше - скачиваем сам проект, и следуя гайду по сборке - собираем:

git clone https://github.com/litvinovtd/qeli qeli_vpn
cd celi_vpn/qeli
cargo 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
... далее по тексту ...

Вот теперь - запускается и работает.
В реальных условиях - для организации каналов между серверами во внешнем мире - потестирую его попозже, но это уже другая история.

Собственно говоря, это всё к тому "зачем нужно собирать что-то в контейнерах, когда можно собирать сразу на рабочей машине!" - да вот как раз затем: на рабочей машине, и на рабочих серверах могут быть вообще разные версии ОС и разные архитектуры, и контейнеры позволяют сделать нужную версию и туда и сюда.