uz
Feedback
Библиотека девопса | DevOps, SRE, Sysadmin

Библиотека девопса | DevOps, SRE, Sysadmin

Kanalga Telegram’da o‘tish

Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787

Ko'proq ko'rsatish

📈 Telegram kanali Библиотека девопса | DevOps, SRE, Sysadmin analitikasi

Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 390 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 449-o'rinni va Rossiya mintaqasida 61 235-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 10 390 obunachiga ega bo‘ldi.

27 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 6 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 10.22% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.22% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 062 marta ko‘riladi; birinchi sutkada odatda 439 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 1 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent devops'a, навигация, скрипт, docker, git kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787

Yuqori yangilanish chastotasi (oxirgi ma’lumot 28 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

10 390
Obunachilar
Ma'lumot yo'q24 soatlar
-97 kunlar
+630 kunlar
Postlar arxiv
🧑‍💻 Скрипт молчит и это проблема Каждый раз, когда команда завершается в Linux, она возвращает число от 0 до 255. Это единс
🧑‍💻 Скрипт молчит и это проблема Каждый раз, когда команда завершается в Linux, она возвращает число от 0 до 255. Это единственный способ скрипта сказать миру: «всё окей» или «что-то пошло не так». 0 это успех. Всё остальное — ошибка. Что происходит без системы Скрипт упал с кодом 1. Что это значит? Непонятно. Другой скрипт упал с 1. Тоже непонятно и это уже другой скрипт. CI/CD pipeline ловит ошибку и не знает, что делать дальше. Дебаггинг превращается в угадайку. Как сделать нормально: диапазоны Разбейте коды на логические группы:
0       -> успех
1-9     -> общие ошибки
10-19   -> плохие аргументы / входные данные
20-29   -> ошибки файловой системы
30-39   -> сеть
40-49   -> права доступа
50-99   -> внутренние ошибки
Коды 126-255 зарезервированы системой. Не трогайте. Дайте кодам имена Не пишите exit 20. Напишите так:
EXIT_FILE_NOT_FOUND=20
EXIT_PERMISSION_DENIED=40
EXIT_NETWORK_FAIL=30
Скрипт становится самодокументируемым. Через полгода вы скажете себе спасибо. Вынесите коды в отдельный файл Если скриптов несколько, то создайте exit_codes.sh и подключайте его через source exit_codes.sh. Всегда проверяйте внешние команды:
cp file1 file2
if [ $? -ne 0 ]; then
  echo "Копирование не удалось" >&2
  exit $EXIT_FILE_WRITE_ERROR
fi
Никогда не игнорируйте статус выхода внешних команд. Молчаливые ошибки это худшие ошибки. Документируйте ошибки. Тестируйте сценарии падений, а не только успех. Оставляйте зазоры в диапазонах для будущих случаев. Маленькая деталь, которая отличает скрипт на коленке от production-ready инструмента. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🌎 Фиксируйте версии зависимостей Многие думают, что package-lock.json уже дает воспроизводимые сборки. На практике npm install может подтянуть новые версии из диапазонов ^ и ~, если кто-то запустит команду в неподходящий момент. Было:
{
  "dependencies": {
    "axios": "^1.7.9",     // любой 1.x.x 
    "express": "~4.18.0",  // только 4.18.x
    "react": "^19.0.0"     // любой 19.x.x
  }
}
Стало:
{
  "dependencies": {
    "axios": "1.7.9",
    "express": "4.18.2", 
    "react": "19.0.0"
  }
}
Безопасность патчей "А как же security updates?" Лучше получать их осознанно через PR, чем во время сборки. Автоматические обновления приносят не только фиксы, но и риски сломать проект. Dependabot или Renovate создают pull request с обновлениями. Команда проверяет diff, прогоняет тесты, мерджит вручную. Что делать 1. Убрать все ^ и ~ из package.json 2. Зафиксировать точные версии (npm i package@x.y.z) 3. Настроить Dependabot/Renovate 4. Проверять все обновления тестами Такая схема убирает магию из сборки. Проще дебажить релизы и ловить настоящие баги. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

⚙️ Защита от случайного удаления Вы хотя бы раз случайно удаляли не тот файл через rm -rf? Это случается даже с опытными разработчиками. Один неверный путь и данные пропали. Простая обёртка над rm решает эту проблему без установки сторонних утилит:
rm() {
  ls -FCsd -- "$@"
  read -p 'Delete? [y/N] ' ans
  if [ "$ans" = "y" ]; then
    command rm -rf -- "$@"
  fi
}
Функция перехватывает вызов rm, показывает список файлов и спрашивает подтверждение. Если не ответить y, то ничего не удалится. Добавьте функцию в ~/.bashrc или ~/.zshrc и перезагрузите конфиг:
source ~/.bashrc
Подтверждение помогает, но файлы всё равно удаляются сразу. Если хочется подстраховаться ещё раз, можно сделать подобие корзины: перемещать файлы во временную папку вместо немедленного удаления:
rm() {
  local trash="/tmp/.trash"
  mkdir -p "$trash"
  ls -FCsd -- "$@"
  read -p 'Move to trash? [y/N] ' ans
  if [ "$ans" = "y" ]; then
    mv -- "$@" "$trash"
    echo "Moved to $trash"
  fi
}
Файлы будут лежать в /tmp/.trash до следующей перезагрузки или ручной очистки. Это даёт время одуматься. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

😎 Топ-вакансий для девопсов за неделю Junior DevOps engineer — от 100 000 ₽, удалёнка Middle/Senior DevOps Engineer — до 4 500 €, гибрид в Алматы или Белграде DevOps — до 400 000 ₽, удалёнка ➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs 🐸Библиотека devops'a #вакансия_недели

⚙️ Гарантированная очистка даже после краша Скрипт упал с ошибкой, а временный файл остался. Или соединение не закрылось. Или lock-файл завис. Это классика и trap решает её в одну строчку. Что делает trap Регистрирует функцию, которая запустится при выходе из скрипта — неважно, нормальном или аварийном. Вы один раз описываете логику очистки и забываете об этом:
#!/bin/bash
set -euo pipefail

tmpfile=$(mktemp)

cleanup() {
  rm -f "$tmpfile"
  echo "Cleaned up temporary files"
}

trap cleanup EXIT   # сработает при любом выходе

# Основная работа
echo "Processing..." > "$tmpfile"
cat "$tmpfile"
EXIT это сигнал, который bash отправляет при завершении скрипта. Функция cleanup удалит временный файл, даже если скрипт упал на середине. Что можно убирать через trap Временные файлы и директории, lock-файлы, открытые соединения с базой, фоновые процессы, которые скрипт запустил сам. Почему это лучше, чем rm в конце скрипта rm в конце не выполнится, если скрипт упадёт раньше. trap cleanup EXIT выполнится всегда — это гарантия на уровне интерпретатора. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

👨‍💻 npm install в CI/CD это риск Атака на axios в марте 2025 года показала простую вещь: если ваш пайплайн использует npm i
👨‍💻 npm install в CI/CD это риск Атака на axios в марте 2025 года показала простую вещь: если ваш пайплайн использует npm install, он каждый раз ходит в живой реестр npm и разрешает диапазоны версий заново. Это открывает окно для подмены пакета. Если в package.json написано "axios": "^1.7.9", npm install может поставить 1.14.1 — версию, которой не было в вашем lockfile. Вредоносную версию, опубликованную 31 марта, многие поставили именно так. Почему npm ci безопаснее npm ci устанавливает ровно то, что записано в package-lock.json. Если lockfile расходится с package.json — упадёт с ошибкой. В реестр за новыми версиями не ходит. Новый вредоносный пакет попасть не может, пока вы сами не обновите lockfile. Как заменить в CI/CD:
# Было
- name: Install dependencies
  run: npm install

# Стало
- name: Install dependencies
  run: npm ci
Бонус — скорость npm ci удаляет node_modules и ставит заново, без попытки согласовать существующее состояние. Это быстрее на 20–40% по сравнению с npm install. Это одно изменение — и ваш пайплайн уже не подхватит внезапно опубликованную вредоносную версию. Lockfile при этом нужно хранить в репозитории и обновлять осознанно, а не позволять CI делать это автоматически. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

Мониторинг есть, а ясности не хватает Когда вокруг турбулентность, а цифровые сервисы работают на пределе, полагаться на инту
Мониторинг есть, а ясности не хватает Когда вокруг турбулентность, а цифровые сервисы работают на пределе, полагаться на интуицию — дорогое удовольствие. В такие моменты выживают те, кто видит картину целиком, а не гадает на кофейной гуще. VB-Trend 2026 МАЯК — конференция VolgaBlob и Кибердома про observability и мониторинг как антикризисную ясность. В программе релиз Smart Monitor 6.0 и новый взгляд на Observability, доклады и демозоны с кейсами крупных организаций и партнёров, а также круглый стол с визионерами о навыках будущего и управленческих решениях в эпоху ИИ. Для тех, кто работает с инфраструктурой, DevOps, ИБ и не только. ➡️ Регистрация Когда: 17 апреля, 12:00–21:00 Где: Кибердом, 2-я Звенигородская ул., 12 стр. 18

🐧 Linux 7.0 выйдет в ближайшие две недели Линус Торвальдс подтвердил, что релиз Linux 7.0 не за горами. Первые недели цикла
🐧 Linux 7.0 выйдет в ближайшие две недели Линус Торвальдс подтвердил, что релиз Linux 7.0 не за горами. Первые недели цикла разработки были необычно насыщенными и грозили сдвинуть сроки, но к пятому релиз-кандидату ситуация стабилизировалась. При семи релиз-кандидатах финальный выпуск придётся на 12 апреля. Но по статистике прошлых циклов вероятнее восьмой RC и дата 19 апреля. Что изменится по существу: Linux 7.0 станет первым ядром, в котором Accurate Explicit Congestion Notification включён по умолчанию для всех TCP-соединений. Это важно прежде всего для дата-центров, где несколько потоков конкурируют за полосу пропускания. Среди других изменений заявлена поддержка новых процессоров Intel Nova Lake и AMD Zen 6, а также доработки в планировщике и управлении памятью. Поддержка Rust в ядре теперь официально стабильна и больше не помечена как экспериментальная. Ubuntu 26.04 LTS и Fedora 44 рассчитывают включить 7.0 как дефолтное ядро сразу после выхода. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии

🛠 Используйте $() вместо обратных кавычек для подстановки команд Обратные кавычки работают. Но они же и мешают: плохо читаются и не дают вложить одну команду в другую без боли. Проблема Когда нужно подставить вывод команды в переменную или другую команду, оба синтаксиса технически делают одно и то же. Но обратные кавычки визуально сливаются с апострофами, их тяжело заметить в длинной строке, а при попытке вложить одну подстановку в другую всё быстро превращается в нечитаемый код. Что делает $() $() это современный способ подстановки команд в bash. Он выполняет команду внутри скобок и подставляет её вывод на место:
# Устаревший стиль — сложно читать, сложно вкладывать
today=`date '+%Y-%m-%d'`

# Современный и читаемый вариант
today=$(date '+%Y-%m-%d')
echo "Today is $today"
Разница небольшая, но когда команды усложняются, $() выигрывает однозначно. Вложенность где это особенно важно Главное преимущество $() проявляется при вложении. С обратными кавычками вложенность либо невозможна, либо требует экранирования обратным слешем, что делает код трудночитаемым. С $() вложение выглядит естественно:
# Вложение — работает чисто только с $()
lines=$(wc -l < "$(find . -name '*.log' | head -1)")
Здесь сначала выполняется внутренняя команда find, которая ищет первый .log файл. Её вывод передаётся в wc -l, и результат подсчёта строк записывается в переменную lines. Попробуйте написать то же самое на обратных кавычках, получите либо ошибку, либо код, который никто не разберёт через неделю. Обратные кавычки можно встретить в старых скриптах — это нормально. Но для нового кода стоит использовать $(). Читаемость лучше, вложенность работает, и это соответствует стандарту POSIX для современных оболочек. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

🤖 mysqldump с хоста, не заходя в контейнер Если MySQL-контейнер пробрасывает порт на хост, делать дамп можно прямо с хостовой машины. Не нужно заходить через docker exec, запускаете mysqldump локально, и всё. Для этого нужны два условия: на хосте установлен MySQL-клиент, и в конфигурации контейнера прописан проброс порта. Настройка Docker Compose В docker-compose.yml должна быть секция ports:
services:
  mysql:
    image: mysql:8
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
    volumes:
      - mysql-data:/var/lib/mysql
Запуск дампа с хоста:
mysqldump -h 127.0.0.1 -P 3306 \
  -u root -p'yourpassword' \
  --single-transaction \
  mydatabase > backup.sql
Флаг --single-transaction важен для InnoDB: он снимает дамп без блокировок таблиц. Когда это имеет смысл Версия mysqldump на хосте может отличаться от той, что внутри контейнера. Это важно, потому что поведение флагов и формат дампа меняются от версии к версии. Если вы хотите точно контролировать, какая версия утилиты делает дамп, этот способ даёт такую возможность. Ещё один плюс: если у вас уже есть скрипты резервного копирования на хосте, этот подход встраивается в них без лишних правок. Про безопасность В разработке открытый порт не проблема. В продакшне стоит убедиться, что 3306 слушает только 127.0.0.1, а не все интерфейсы. Иначе база доступна снаружи, что плохо. В docker-compose.yml это выглядит так:
ports:
  - "127.0.0.1:3306:3306"
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #root_prompt

🔄 iptables в Arch Linux теперь по умолчанию использует nft-бэкенд В Arch Linux изменилась схема пакетов iptables. Пакет iptables-nft переименован в iptables, а старый legacy-бэкенд теперь доступен как iptables-legacy. При переключении между пакетами нужно проверить наличие .pacsave-файлов в /etc/iptables/ и при необходимости восстановить правила вручную:
/etc/iptables/iptables.rules.pacsave
/etc/iptables/ip6tables.rules.pacsave
Большинство конфигураций продолжит работать без изменений. Но если вы используете нестандартные xtables-расширения или поведение, специфичное для legacy-бэкенда, стоит проверить всё вручную и при необходимости переключиться на iptables-legacy. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии

🔤 Таблицы прямо в терминале sheets это TUI-инструмент на Go, который открывает CSV прямо в терминале и даёт работать с ним п
🔤 Таблицы прямо в терминале sheets это TUI-инструмент на Go, который открывает CSV прямо в терминале и даёт работать с ним почти как в нормальном табличном редакторе. Открыть файл:
sheets budget.csv
Прочитать конкретную ячейку или диапазон без открытия интерфейса:
sheets budget.csv B9
sheets budget.csv B1:B3
Изменить ячейку из командной строки:
sheets budget.csv B7=10 B8=20
Передать данные через stdin:
sheets <<< "ID,Name,Age
1,Alice,24
2,Bob,32"
Как это работает внутри Навигация сделана под vim-пользователей: h/j/k/l для перемещения, gg/G для прыжка к началу или концу, / для поиска. Редактирование через i, выделение через v, отмена через u. Сохранение по :w, выход по :q. Если вы привыкли к vim, освоите sheets за пять минут. Есть поддержка undo/redo, буфер обмена, визуальное выделение диапазонов и даже формулы в visual mode через =. Установка:
go install github.com/maaslalani/sheets@main
Для тех, кто работает в терминале и не хочет переключаться в GUI ради CSV. Полезно при отладке экспортов, быстром просмотре логов в табличном формате или в CI-скриптах, где нужно вытащить конкретное значение. ➡️ Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🤩 Первая рабоча неделя апреля В С Ё Поэтому собрали для вас пак новостей. — Компьютер без RAM На фоне роста цен на оперативн
🤩 Первая рабоча неделя апреля В С Ё Поэтому собрали для вас пак новостей. — Компьютер без RAM На фоне роста цен на оперативную память YouTube-канал PortalRunner проверил, можно ли вообще обойтись без неё. — Ubuntu теперь требует больше RAM, чем Windows 11 Ubuntu 26.04 LTS поднял минимальную планку оперативной памяти до 6 ГБ. Windows 11 при этом всё ещё официально требует только 4 ГБ. — SystemRescue 13.00 Запускайте Docker из любой среды 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #дайджест_недели

💼 30 сайтов для поиска работы в IT в 2026 году Рынок IT-вакансий давно не ограничивается hh.ru и LinkedIn. Одни платформы за
💼 30 сайтов для поиска работы в IT в 2026 году Рынок IT-вакансий давно не ограничивается hh.ru и LinkedIn. Одни платформы заточены под стартапы и equity-офферы, а другие под прозрачные зарплаты без буллшита, третьи созданы специально для первой работы после универа. ➡️ Собрали 30 джоб-сайтов с описанием, кому и зачем они подходят 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a

📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пятничный_деплой
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пятничный_деплой

⚙️ mysqldump через docker exec Самый простой способ сделать бэкап MySQL в Docker — запустить mysqldump прямо внутри контейнер
⚙️ mysqldump через docker exec Самый простой способ сделать бэкап MySQL в Docker — запустить mysqldump прямо внутри контейнера. Не нужно пробрасывать порты и ставить MySQL-инструменты на хост. Всё что нужно уже есть в контейнере. Базовая команда:
docker exec mysql-container mysqldump \
  -u root -p'yourpassword' \
  --single-transaction \
  --routines \
  --triggers \
  mydatabase > backup_$(date +%Y%m%d_%H%M%S).sql
Флаг --single-transaction обязателен для InnoDB. Он делает консистентный снимок без блокировки таблиц, приложение продолжает работать в штатном режиме. Флаги --routines и --triggers включают в дамп хранимые процедуры и триггеры, которые mysqldump по умолчанию пропускает. Бэкап всех баз сразу:
docker exec mysql-container mysqldump \
  -u root -p'yourpassword' \
  --single-transaction \
  --all-databases > full_backup_$(date +%Y%m%d_%H%M%S).sql
Восстановление:
docker exec -i mysql-container mysql \
  -u root -p'yourpassword' mydatabase < backup_20260403_040000.sql
Но у этого подхода есть потолок. Нет планировщика, нет сжатия, нет отправки на удалённое хранилище. Всё это придётся добавлять самостоятельно. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🌐 Облачные права для CI без долгоживущих ключей Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим
🌐 Облачные права для CI без долгоживущих ключей Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим моментом. Пайплайн должен обращаться к облаку, и нужно как-то передать ему права. Решение находится быстро, есть минимум четыре способа, пайп зеленеет, задача закрыта. Но именно здесь часто закладывается проблема, которая выстрелит позже. ➡️ Узнать ответ 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #задача_со_звёздочкой

✌🏻 У нас две новости — хорошая и плохая! Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡 Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯 Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в LangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.
Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.
Программа курса, полный состав спикеров и другие подробности 👈🏻 ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.

💡 Сканируйте образы перед деплоем Вы сделали всё правильно: многоступенчатая сборка, distroless-образ, non-root пользователь
💡 Сканируйте образы перед деплоем Вы сделали всё правильно: многоступенчатая сборка, distroless-образ, non-root пользователь, закреплённый дайджест. Образ компактный. А потом выходит CVE в библиотеке, которую подтянул базовый образ полгода назад. Сканирование образов закрывает эту дыру. Не нужен отдельный инструмент: Trivy бесплатный, быстрый и нормально вписывается в Go CI. Как запустить Одна команда и падаем на HIGH и CRITICAL уязвимостях:
trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
Для GitHub Actions:
- name: Scan image
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: myapp:latest
    exit-code: '1'
    severity: 'HIGH,CRITICAL'
Запускайте после каждой сборки. Поймаете проблему до прода, а не после звонка от безопасников или, что хуже, после инцидента. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #арсенал_инженера

🐳 Запускайте Docker из любой среды Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчико
🐳 Запускайте Docker из любой среды Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчиков в корпоративных средах не могли использовать Docker Desktop вообще. Крупные компании часто работают через VDI или управляемые рабочие столы с жёсткими политиками безопасности. На таких машинах Docker Desktop просто не запускался. Команды шли на компромиссы, платили за обходные решения и теряли время. Как это работает Контейнерный движок переезжает в облако Docker. Разработчик продолжает работать как раньше: тот же терминал, те же команды docker run, тот же интерфейс Docker Desktop. Единственное, что меняется это где именно работает движок. Соединение идёт через зашифрованный туннель, каждая сессия изолирована и не сохраняет данные после завершения. ➡️ Блог разработчиков 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека devops'a #пульс_индустрии