Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 371новая вакансия за сутки·54 593вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 604
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 801
  • Облачные технологии6 644
  • QA вакансии2 164
  • Android1 318
  • Инженер данных868
  • Продакт-менеджер314

Разработка

  • iOS1 230
  • Backend вакансии1 212
  • AI вакансии548
  • Fullstack вакансии499
  • Frontend вакансии423
  • Mobile вакансии28

По стеку

  • Go5 235
  • Java3 133
  • Kotlin1 120
  • Node.js1 004
  • Rust852
  • .NET659
  • PHP319
  • C++268
  • C#207

DevOps и инфраструктура

  • Kubernetes3 909
  • Linux-инфраструктура2 843
  • DevOps вакансии2 677
  • Terraform / IaC2 175
  • Мониторинг и Observability1 072
  • CI/CD917
  • SRE305
  • Кибербезопасность33

Аналитика и данные

  • Аналитик данных532
  • Data Scientist435
  • Бизнес-аналитик400
  • Системный аналитик68

Другие направления

  • Проджект-менеджер105
  • UI/UX дизайн68
  • Ручное тестирование14

По регионам

  • Вакансии в США25 825
  • Вакансии в Европе10 301
  • Работа в России3 618
  • Вакансии в Канаде2 268

По формату

  • Удалённые вакансии42 661
  • Релокация в США25 825
  • Гибридная работа5 655
  • Офисная работа4 428

По уровню

  • Senior вакансии22 630
  • Middle вакансии11 534
  • Junior вакансии3 862

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise187 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме DockerВсе вопросы
DockerMiddleКодинг

Почему RUN apt-get update без apt-get install в той же строке — это плохо?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Отдельный RUN apt-get update кэшируется независимо: следующий install может работать с устаревшими package lists. Правило: update, install и очистка /var/lib/apt/lists/* — всегда в одной инструкции RUN.

Правильный паттерн

Объединяйте update, install и удаление кэша в одну инструкцию RUN. Это гарантирует, что package metadata и установка всегда выполняются вместе и никогда не рассинхронизируются.

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        curl \
        jq \
        ca-certificates \
    && rm -rf /var/lib/apt/lists/*

Флаг --no-install-recommends отсекает рекомендуемые пакеты и заметно уменьшает размер слоя. Очистка /var/lib/apt/lists/* удаляет индексы, которые больше не нужны в runtime, — это снижает размер итогового image.

Почему разделение — проблема кэша

Docker build cache привязывается к инструкции и её входным данным. Если RUN apt-get update вынесен в отдельную инструкцию и содержимое строки не изменилось, builder считает слой валидным и берёт из кэша. Следующий RUN apt-get install -y curl выполняется заново, но опирается на устаревшие package lists из кэшированного слоя.

Результат: в образе могут оказаться устаревшие версии пакетов, а при изменении зеркал — ошибка 404 вида E: Unable to fetch some archives. Образ при этом собирается без предупреждений.

Когда update в отдельном слое всё же встречается

В базовых образах вроде debian:bookworm иногда делают RUN apt-get update на отдельном шаге намеренно — как отдельный base layer, который потом замораживают. Это допустимо только если за ним сразу идёт отдельный long-lived build stage и его digest закреплён. В обычных application Dockerfile такой подход неоправдан.

Подводные камни

  • Добавление --no-cache в docker build — не решение: это медленно, прячет проблему и не даёт кэша для CI.
  • Удаление /var/lib/apt/lists/* отдельным RUN — не помогает: списки уже записаны в предыдущий layer, слой immutable.
  • Версионирование пакетов: apt-get install -y curl=7.88.* повышает воспроизводимость, но может сломаться при смене зеркала — нужен отдельный механизм контроля.
  • Если base image обновился и сменился apt репозиторий — ваш кэшированный update-слой стал недействителен, но builder об этом не знает.
  • В multi-stage build повторяйте update + install в каждом stage, где нужны пакеты: stage не наследует apt state.
  • apt-get upgrade внутри образа нежелателен — он вносит недетерминированные изменения; лучше обновить base image тег.
  • При использовании BuildKit cache mount (--mount=type=cache,target=/var/cache/apt) rm -rf /var/lib/apt/lists/* не нужен в том же RUN, но кэш тогда не попадёт в image layer, а останется на builder.
  • Никогда не кладите apt-get update в ONBUILD — child images будут наследовать неактуальный слой.

Типичные ошибки

  • Разносить apt-get update, install и cleanup по разным RUN.
  • Использовать docker build --no-cache как постоянный способ обхода плохого кэша.
  • Очищать /var/lib/apt/lists в следующем слое и ждать уменьшения старого слоя.

Что проверяет интервьюер

  • Понимает cache reuse для неизменившейся RUN инструкции.
  • Объясняет устаревшие package lists и mirror errors.
  • Пишет корректный update/install/cleanup паттерн.

Как вы знаете этот вопрос?

Проверить себя по теме Docker →

Источники

  • https://docs.docker.com/reference/dockerfile/
  • https://docs.docker.com/build/
←Предыдущий вопросКак работает кеш слоёв при docker build? Почему добавление одной строки в package.json ломает кеш для npm install?Следующий вопрос→Чем CMD отличается от ENTRYPOINT? Что произойдёт, если задать оба?

Связанные темы

Dockerbuild reliabilityDockerfile best practicesLinux packages

Частые вопросы на собеседовании

  • Как ты организуешь tagging образов в проде? Почему latest в проде — плохо?
  • Чем named volume отличается от bind mount и от tmpfs? Когда что использовать?
  • Зачем контейнер должен писать логи в stdout/stderr, а не в файл?
  • Контейнер в Restarting бесконечно. Алгоритм действий?