Автообновление контейнеров по Git push
Автоматизация деплоя — один из способов сэкономить часы жизни и избавиться от рутины.
Если вы используете GitLab и Docker, можно настроить простую, но эффективную схему: пушим код — запускается GitLab CI, собирается и пушится образ — Watchtower на проде обновляет контейнер. Всё это без единого ручного действия.
1️⃣ GitLab CI собирает и пушит Docker-образ
Пример .gitlab-ci.yml:
Для продакшена рекомендуют использовать versioned теги:
2️⃣ Watchtower на сервере следит за обновлениями
Запускаем Watchtower с привязкой к сокету Docker:
Если у вас приватный реестр, авторизуйтесь на сервере:
Можно указать конкретный контейнер, за которым следить:
3️⃣ Запускаем основной контейнер из latest
Контейнер должен быть собран из обновляемого тега:
При обновлении latest Watchtower автоматически остановит и перезапустит контейнер с новым образом.
Автоматизация деплоя — один из способов сэкономить часы жизни и избавиться от рутины.
Если вы используете GitLab и Docker, можно настроить простую, но эффективную схему: пушим код — запускается GitLab CI, собирается и пушится образ — Watchtower на проде обновляет контейнер. Всё это без единого ручного действия.
Пример .gitlab-ci.yml:
stages:
- build
- deploy
variables:
IMAGE_TAG: registry.gitlab.com/yourgroup/yourapp:latest
build:
stage: build
noscript:
- docker build -t $IMAGE_TAG .
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
- docker push $IMAGE_TAG
Для продакшена рекомендуют использовать versioned теги:
IMAGE_TAG: registry.gitlab.com/yourgroup/yourapp:$CI_COMMIT_SHORT_SHA
Запускаем Watchtower с привязкой к сокету Docker:
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WATCHTOWER_CLEANUP=true \
-e WATCHTOWER_POLL_INTERVAL=60 \
containrrr/watchtower
Если у вас приватный реестр, авторизуйтесь на сервере:
docker login registry.gitlab.com
Можно указать конкретный контейнер, за которым следить:
containrrr/watchtower yourapp_container
Контейнер должен быть собран из обновляемого тега:
docker run -d \
--name yourapp_container \
yourgroup/yourapp:latest
При обновлении latest Watchtower автоматически остановит и перезапустит контейнер с новым образом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3
Какой побочный эффект может вызвать увеличение vm.max_map_count в Linux?
Anonymous Quiz
29%
Увеличение задержек в системных вызовах mmap
50%
Повышенное потребление оперативной памяти ядром
15%
Уменьшение производительности файловой системы
6%
Отключение механизма Copy-on-Write
👍5🔥1
Ускорение cold-start для systemd-сервисов
Если при загрузке системы или запуске демонов вы замечаете задержки, systemd даёт немало рычагов, чтобы cold-start прошёл быстрее.
Вот основные параметры, с которыми стоит поиграться:
⏺ IOSchedulingClass и IOSchedulingPriority
Позволяют задать класс и приоритет доступа к диску.
Пример:
Если сервис работает с базами или логами — можно установить класс realtime или поднять приоритет ближе к 0 (чем ниже — тем выше приоритет).
⏺ CPUSchedulingPolicy и CPUSchedulingPriority
Контроль приоритетов на уровне CPU-шедулера.
Для критичных задач — SCHED_FIFO или SCHED_RR.
⏺ StartLimitBurst и StartLimitInterval
Позволяют контролировать поведение при частых перезапусках. Иногда systemd из-за быстрых рестартов просто «глушит» сервис.
Можно дать больше попыток на старте — особенно если сервис зависит от сети или сторонних демонов.
⏺ TimeoutStartSec
Если cold-start занимает время, а systemd слишком рано считает запуск проваленным — увеличьте таймаут:
⏺ ExecStartPre и ReadyNotify
Иногда лучше запускать предварительную инициализацию отдельно, чтобы основная служба стартовала уже с готовым окружением.
⏺ Nice и OOMScoreAdjust
Если нужно приоритетное планирование и защита от OOM killer’а:
Если при загрузке системы или запуске демонов вы замечаете задержки, systemd даёт немало рычагов, чтобы cold-start прошёл быстрее.
Особенно это критично для сервисов, чувствительных к времени реакции (например, прокси, VPN, API-шлюзы).
Вот основные параметры, с которыми стоит поиграться:
Позволяют задать класс и приоритет доступа к диску.
Пример:
[Service]
IOSchedulingClass=best-effort
IOSchedulingPriority=2
Если сервис работает с базами или логами — можно установить класс realtime или поднять приоритет ближе к 0 (чем ниже — тем выше приоритет).
Контроль приоритетов на уровне CPU-шедулера.
Для критичных задач — SCHED_FIFO или SCHED_RR.
[Service]
CPUSchedulingPolicy=fifo
CPUSchedulingPriority=50
Позволяют контролировать поведение при частых перезапусках. Иногда systemd из-за быстрых рестартов просто «глушит» сервис.
[Unit]
StartLimitBurst=10
StartLimitIntervalSec=30
Можно дать больше попыток на старте — особенно если сервис зависит от сети или сторонних демонов.
Если cold-start занимает время, а systemd слишком рано считает запуск проваленным — увеличьте таймаут:
[Service]
TimeoutStartSec=60s
Иногда лучше запускать предварительную инициализацию отдельно, чтобы основная служба стартовала уже с готовым окружением.
[Service]
ExecStartPre=/usr/local/bin/warmup.sh
Type=notify
Если нужно приоритетное планирование и защита от OOM killer’а:
[Service]
Nice=-5
OOMScoreAdjust=-500
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4
lshw – список железных компонентов сервера
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
Debian/Ubuntu
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
Пример вывода:
Другие полезные команды
Вывод в развернутом виде:
Сохранение в файл:
Информация только о CPU:
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
sudo yum install lshw
Debian/Ubuntu
sudo apt install lshw
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
lshw -short
Пример вывода:
H/W path Device Class Denoscription
=====================================================
system Virtual Machine
/0 bus Virtual Machine
/0/5 processor Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz
/0/51 memory 4GiB System Memory
/0/1 scsi2 storage
/0/1/0.0.0 /dev/sda disk 160GB SCSI Disk
/0/1/0.0.0/1 /dev/sda1 volume 500MiB EXT4 volume
/1 eth0 network Ethernet interface
Другие полезные команды
Вывод в развернутом виде:
lshw
Сохранение в файл:
lshw > hardware_info.txt
Информация только о CPU:
lshw -C CPU
👍15❤1
Ребята сделали крутейший канал, где на простых картинках и понятном языке обучают Python, делятся полезными фишками и инструментами
Подписывайтесь: @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Основные возможности:
— Наложение слоев: изменения записываются только в upperdir, а чтение происходит сначала из него, затем из lowerdir.
— Эффективность: экономия дискового пространства за счёт разделения слоёв и уменьшения количества копий.
— Применение: используется в Docker для организации copy-on-write хранилищ, а также в live-системах и сборках образов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Готовитесь к собеседованию в IT-компанию? 👀
Скачайте курс-гайд «Алгоритмы: roadmap для работы и собеседований» бесплатно.
👉 Готовый план подготовки: алгоритмы, вопросы и советы от эксперта, практика и доп. литература.
Скачать курс-гайд бесплатно через бота ➡️ по ссылке
Скачайте курс-гайд «Алгоритмы: roadmap для работы и собеседований» бесплатно.
👉 Готовый план подготовки: алгоритмы, вопросы и советы от эксперта, практика и доп. литература.
Скачать курс-гайд бесплатно через бота ➡️ по ссылке
👍1
Изоляция окружения без root: Mount namespaces и unshare
Используя Linux namespaces и unshare, можно запускать процессы в изолированных файловых средах — удобно для тестов, CI, экспериментов с пакетами или конфигурациями.
Что такое mount namespace?
Это изоляция файловой системы: процесс видит только свои монтирования и не влияет на другие процессы.
Даже без root-прав можно поднять временное окружение и работать «внутри», не затрагивая хост-систему.
Пример:
Теперь вы внутри своего namespace, но пока общая файловая система. Добавим chroot-подобную изоляцию:
Что это даёт?
• Тест конфигураций без риска для системы
• Мини-среда без виртуализации
• Контейнеризация «на коленке» без Docker
• Повышенная безопасность: ограничение доступа к файловой системе
Нужна песочница без Docker и без прав root?
Используя Linux namespaces и unshare, можно запускать процессы в изолированных файловых средах — удобно для тестов, CI, экспериментов с пакетами или конфигурациями.
Что такое mount namespace?
Это изоляция файловой системы: процесс видит только свои монтирования и не влияет на другие процессы.
Даже без root-прав можно поднять временное окружение и работать «внутри», не затрагивая хост-систему.
Пример:
mkdir ~/sandbox
cp /bin/bash ~/sandbox/
unshare --mount --uts --ipc --net --pid --fork --user --map-root-user bash
Теперь вы внутри своего namespace, но пока общая файловая система. Добавим chroot-подобную изоляцию:
mount --bind ~/sandbox ~/sandbox
cd ~/sandbox
pivot_root . .
exec chroot . /bash
Что это даёт?
• Тест конфигураций без риска для системы
• Мини-среда без виртуализации
• Контейнеризация «на коленке» без Docker
• Повышенная безопасность: ограничение доступа к файловой системе
👍14❤2🤔1
✅ 21 курс по цене одного с подпиской на курсы Слёрма.
Kubernetes, Docker, Postgres, Gitlab, Terraform, Golang, Python и многое другое.
Экономия до 90%.
Гибкий график, обратная связь, поддержка от спикеров – всё, что нужно для интенсивного и эффективного обучения.
Выбрать тариф и узнать подробности ➡️ по ссылке
Kubernetes, Docker, Postgres, Gitlab, Terraform, Golang, Python и многое другое.
Экономия до 90%.
Гибкий график, обратная связь, поддержка от спикеров – всё, что нужно для интенсивного и эффективного обучения.
Выбрать тариф и узнать подробности ➡️ по ссылке
👍1
Что делает параметр fs.protected_hardlinks = 1 в sysctl?
Anonymous Quiz
28%
Запрещает создание всех жёстких ссылок
15%
Разрешает создавать жёсткие ссылки только на исполняемые файлы
34%
Защищает от атак повышения привилегий через жёсткие ссылки
22%
Блокирует жёсткие ссылки на файлы владельца root
👍12❤1
HIGGS — новый open-source метод сжатия LLM от Яндекса и научных партнёров
Исследователи из Yandex Research, ВШЭ, MIT, KAUST и ISTA представили HIGGS — способ квантизации больших языковых моделей без потери качества.
Метод уже доказал свою эффективность на DeepSeek R1 (671B параметров) и Llama 4 Maverick (400B), позволяя запускать их на более доступных устройствах.
Что делает HIGGS:
⏺ Уменьшает размер модели без дообучения
⏺ Работает даже без доступа к обучающим данным
⏺ Лучше GPTQ и AWQ в диапазоне 2–4 бит
⏺ Уже проверен на Llama 3, Llama 4, Qwen2.5
Доступно на:
• GitHub
• Hugging Face
• arXiv (научная статья принята на NAACL 2025)
HIGGS делает LLM доступнее не только для корпораций, но и для независимых разработчиков и лабораторий.
Исследователи из Yandex Research, ВШЭ, MIT, KAUST и ISTA представили HIGGS — способ квантизации больших языковых моделей без потери качества.
Метод уже доказал свою эффективность на DeepSeek R1 (671B параметров) и Llama 4 Maverick (400B), позволяя запускать их на более доступных устройствах.
Что делает HIGGS:
Доступно на:
• GitHub
• Hugging Face
• arXiv (научная статья принята на NAACL 2025)
HIGGS делает LLM доступнее не только для корпораций, но и для независимых разработчиков и лабораторий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
tmpfs и zram: ускоряем систему или забиваем оперативку впустую?
RAM-диски — это круто, пока они не начинают мешать.
tmpfs и zram дают разные преимущества, и использовать их надо с пониманием.
tmpfs: максимально быстро, но без компромиссов
Пишет напрямую в оперативную память. Отлично подходит для:
– /tmp на десктопе
– Сборок в CI
– Хранения промежуточных логов, сокетов, lock-файлов
Монтирование:
Или прописать в fstab:
Ошибка №1: tmpfs в /tmp на 512M в системе с 1ГБ RAM — и скрипт сборки падает с ENOSPC. Лучше:
zram: компромиссы — компрессией
Создаёт блочное устройство в RAM с on-the-fly сжатием. Применяется:
– Как swap на слабых системах
– Для кэша journald
– Для контейнеров в Kubernetes с ограниченной RAM
Пример настройки swap:
Плюсы:
– Можно выжать до 2–2.5x RAM (особенно с текстовыми данными)
– Не убивает SSD
– Работает с приоритетом (можно сделать swapfile + zram)
Ошибка №2: Использовать zram как swap на сервере с heavy-load БД. Это не замена оперативке, это аварийный буфер.
Компрессия имеет цену
Для более точной настройки swap с zram — используйте systemd-zram-generator или zram-tools.
Пример конфига для zram-generator.conf:
RAM-диски — это круто, пока они не начинают мешать.
tmpfs и zram дают разные преимущества, и использовать их надо с пониманием.
tmpfs: максимально быстро, но без компромиссов
Пишет напрямую в оперативную память. Отлично подходит для:
– /tmp на десктопе
– Сборок в CI
– Хранения промежуточных логов, сокетов, lock-файлов
Монтирование:
mount -t tmpfs -o size=256M tmpfs /tmpfs
Или прописать в fstab:
tmpfs /var/cache/build tmpfs size=1G,mode=1777 0 0
Ошибка №1: tmpfs в /tmp на 512M в системе с 1ГБ RAM — и скрипт сборки падает с ENOSPC. Лучше:
mount -t tmpfs -o size=50% tmpfs /tmp
zram: компромиссы — компрессией
Создаёт блочное устройство в RAM с on-the-fly сжатием. Применяется:
– Как swap на слабых системах
– Для кэша journald
– Для контейнеров в Kubernetes с ограниченной RAM
Пример настройки swap:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
Плюсы:
– Можно выжать до 2–2.5x RAM (особенно с текстовыми данными)
– Не убивает SSD
– Работает с приоритетом (можно сделать swapfile + zram)
Ошибка №2: Использовать zram как swap на сервере с heavy-load БД. Это не замена оперативке, это аварийный буфер.
Компрессия имеет цену
Для более точной настройки swap с zram — используйте systemd-zram-generator или zram-tools.
Пример конфига для zram-generator.conf:
[zram0]
zram-size = ram / 3
compression-algorithm = zstd
swap-priority = 100
👍11
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Основные возможности:
— Сохранение состояния памяти, сокетов, дескрипторов, PID и даже TCP-соединений.
— Используется в live-миграции контейнеров (например, в Docker и LXC).
— Полезен для отказоустойчивости, быстрого запуска сервисов и отладки.
Пример:
criu dump -t <pid> --images-dir /tmp/checkpoint
criu restore --images-dir /tmp/checkpoint
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥2
Мониторинг сети с помощью sFlow
sFlow — это протокол мониторинга сети, который позволяет администраторам получать выборочные данные о трафике в реальном времени.
Его основное преимущество — минимальная нагрузка на устройство благодаря выборочному сбору данных.
Как работает sFlow
• Агент sFlow: встроен в сетевое устройство и собирает выборки пакетов.
• Коллектор: сервер, принимающий выборки и анализирующий данные.
• Выборки: небольшие фрагменты трафика передаются на коллектор для анализа.
Настройка sFlow на коммутаторе
1️⃣ Включение агента sFlow
На устройствах Cisco:
На устройствах HPE/Aruba:
2️⃣ Настройка параметров
Cisco: Установите IP-адрес агента (IP устройства):
Укажите частоту выборок:
Настройте интервал опроса счётчиков:
Укажите IP и порт коллектора:
3️⃣ Проверка и мониторинг
Проверьте текущую конфигурацию:
На HPE:
Убедитесь, что данные отправляются на коллектор. Для анализа можно использовать инструменты, такие как sFlowTrend или ntopng.
sFlow — это протокол мониторинга сети, который позволяет администраторам получать выборочные данные о трафике в реальном времени.
Его основное преимущество — минимальная нагрузка на устройство благодаря выборочному сбору данных.
Как работает sFlow
• Агент sFlow: встроен в сетевое устройство и собирает выборки пакетов.
• Коллектор: сервер, принимающий выборки и анализирующий данные.
• Выборки: небольшие фрагменты трафика передаются на коллектор для анализа.
Настройка sFlow на коммутаторе
На устройствах Cisco:
sflow enable
На устройствах HPE/Aruba:
sflow 1 sampling 1000
sflow 1 destination 192.168.1.2 6343
Cisco: Установите IP-адрес агента (IP устройства):
sflow agent-ip 192.168.1.1
Укажите частоту выборок:
sflow sampling-rate 1000
Настройте интервал опроса счётчиков:
sflow polling-interval 30
Укажите IP и порт коллектора:
sflow collector-ip 192.168.1.2 6343
Проверьте текущую конфигурацию:
show sflow
На HPE:
show sflow agent
Убедитесь, что данные отправляются на коллектор. Для анализа можно использовать инструменты, такие как sFlowTrend или ntopng.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔥 ОТ ДЖУНА ДО СЕНЬЁРА ЗА 2 ГОДА — МОЙ ПУТЬ В IT.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
Привет! Я сеньёр, который прошёл путь от джуна до эксперта за два года. И я делюсь с вами абсолютно всем, что узнал на этом пути. Всё, что работает, всё, что не сработало — и как я из этого сделал выводы.
💻 IT Sharks — это не просто канал с полезными советами. Это реальный опыт, который я прошёл, работая с крупнейшими проектами, получая оферы с зарплатами до 800.000₽ и сталкиваясь с падениями и взлётами.
На канале я делюсь всем этим опытом:
▪️Советы по карьерному росту — что я делал, чтобы попасть в большие компании, и как получать офферы с высокими зарплатами.
▪️Менторство до оффера — буду помогать вам, делиться инсайтами, чтобы вы могли сделать правильные шаги в своём пути.
▪️Процесс прохождения собеседований — лайфхаки, как пройти собеседование, переговоры, как не упасть в цене, и как не бояться ставить амбициозные цели.
Если я прошёл этот путь, то сможете и вы. Но я не буду обещать, что это будет легко. Это путь, который потребует усилий, но результат того стоит.
Подписывайтесь на канал, и я буду делиться с вами всеми фишками, которые помогли мне стать сеньёром.
👎9❤2👍2🔥1🌭1