Посты за декабрь 2025
➡️ Shell и Exec формы инструкций в Distroless и FROM scratch образах: как работают команды без shell
➡️ Docker Compose override файлы: как перезаписывать конфигурации для разных окружений
➡️ Директива MAINTAINER в Dockerfile: deprecated инструкция и альтернативы через LABEL
➡️ Docker Image Manifest и Registry V2 API: как устроено хранение метаданных образов
➡️ Docker Engine plugins: расширение функциональности через внешние модули
➡️ Команды `docker stop и start` для перезапуска контейнеров
➡️ Команда `docker network ls` для просмотра созданных сетей
➡️ Директива VOLUME в Dockerfile: автоматическое создание точек монтирования
➡️ Docker Container Runtime и containerd: архитектура исполнения контейнеров
➡️ Флаг `--privileged` в Docker: когда контейнер получает полный доступ к хосту
➡️ Команда docker events для мониторинга событий Docker в реальном времени
➡️ Секция secrets в Docker Compose: безопасное управление паролями и токенами
➡️ Команда docker load для импорта образов из tar-архивов
➡️ Команда docker compose pull для обновления образов сервисов
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥10❤3👍3
Тебе необходимо настроить веб-приложение с docker-compose.yml для запуска на проде. Для этого нужно изменить порты и добавить volume для hot-reload. Как лучше это сделать?
Anonymous Quiz
14%
Создать отдельный docker-compose-dev.yml файл
32%
Создать docker-compose.override.yml файл с изменениями
18%
Изменить основной docker-compose.yml файл
35%
Использовать переменные окружения в docker-compose.yml
😁2
🐟 И рыбку сьесть, и на стул присесть 🪑
Но не спеши паковать вещички! Встречай, единственный и неповторимый флаг --platform и его старший брат buildx (которого мы немножко касались вот тут) для multi-platform сборки!
По сути, multi-platform образы - это запакованные в единый образ несколько вариаций одного и того же контейнерного приложения. И конечно же, прежде чем запускать такой вот мултитул, необходимо собрать образ.
Вот как это выглядит в деле для одной платформы
А как же сборка через Dockerfile?
Не беспокойся, и тут все уже придумали! Вот тебе Dockerfile, который все знает
BuildKit автоматически проставит BUILDPLATFORM как платформу хоста, на котором идет сборка. TARGETPLATFORM ты укажешь через флаг --platform, а TARGETOS и TARGETARCH получатся из парсинга TARGETPLATFORM BuildKit-ом.
Проверка архитектуры образа
Кстати, самое главное, проверить архитектуру спулленного образа можно через уже знакомый docker inspect
Зачем это все нужно?
🎯 Нативная работа на Apple M1/M2 без тормозной эмуляции x86_64
🎯 Оптимальная производительность на ARM-серверах (AWS Graviton, Azure Ampere)
🎯 Поддержка IoT и edge-устройств на ARM
🎯 Единый образ для всей инфраструктуры - не нужно париться с версионированием отдельных build-ов
Так что теперь, когда твоя команда работает на зоопарке из Intel MacBook-ов, Apple Silicon и Linux-серверов, ты можешь собрать один образ и быть уверенным - он заработает везде!
Попробовал multi-platform сборку? Ставь 🔥, чтобы я знал, что не зря потратил время на объяснение всех этих архитектурных заморочек!
Кстати, для серьезных пацанов и девчонков советую углубиться в buildx, который может собрать сразу несколько архитектур одной командой. Подробности работы с ним, а так же особенности строения манифестов под multiplatform образы, нюансы эмуляции при кросс-компиляции вы можете увидеть в бусти Devops сенпая!
🥷 Docker Ninja 🥷
Сидишь ты такой в пятницу. Лениво пушишь в продакшен репо контейнер, собранный с новенького MacBook M2, подаренного на нг. А в голове ни капли беспойства, ведь все работает красиво на твоей ARM-машинке. А во вторник во время релиза прилетает алерт - приложение на x86_64-серверах AWS падает с загадочными ошибками архитектуры.
Релиз менеджер уже разминает свои голосовые связки и неголосовые сухожилия, перед тем, как начать тыкать тебя как котенка в обгаженный уголок...
Ты виновато заходишь в логи, а там "cannot execute binary file: Exec format error". И тут до тебя доходит - ты собрал образ под ARM, а продакшн крутится на Intel!
Первая мысль - ребутать все серверы и надеяться, что проблема рассосется сама. Вторая - начать собирать отдельные образы для каждой архитектуры и как-то их синхронизировать. Третья - тихо всплакнуть в салфеточку и искать новую работу.
Но не спеши паковать вещички! Встречай, единственный и неповторимый флаг --platform и его старший брат buildx (которого мы немножко касались вот тут) для multi-platform сборки!
По сути, multi-platform образы - это запакованные в единый образ несколько вариаций одного и того же контейнерного приложения. И конечно же, прежде чем запускать такой вот мултитул, необходимо собрать образ.
Вот как это выглядит в деле для одной платформы
# Собираем для AMD64 (классические серверы)
docker build --platform linux/amd64 -t myapp:amd64 .
# Собираем для ARM64 (Apple M1/M2, AWS Graviton)
docker build --platform linux/arm64 -t myapp:arm64 .
А как же сборка через Dockerfile?
Не беспокойся, и тут все уже придумали! Вот тебе Dockerfile, который все знает
# Этап 1: Сборщик. Используем платформу ХОСТА для скорости.
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS builder
# TARGETOS и TARGETARCH автоматически установлены BuildKit
ARG TARGETOS TARGETARCH
WORKDIR /app
COPY . .
# Компиляция под ЦЕЛЕВУЮ ОС и архитектуру
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /app/myapp .
# Этап 2: Финальный образ. Используем ЦЕЛЕВУЮ платформу.
FROM --platform=$TARGETPLATFORM alpine:3.18
RUN apk --no-cache add ca-certificates
COPY --from=builder /app/myapp /usr/local/bin/myapp
USER nobody
CMD ["myapp"]
BuildKit автоматически проставит BUILDPLATFORM как платформу хоста, на котором идет сборка. TARGETPLATFORM ты укажешь через флаг --platform, а TARGETOS и TARGETARCH получатся из парсинга TARGETPLATFORM BuildKit-ом.
Проверка архитектуры образа
Кстати, самое главное, проверить архитектуру спулленного образа можно через уже знакомый docker inspect
docker inspect myapp:amd64 | grep Architecture # Выводит архитектуру собранного образа
Зачем это все нужно?
🎯 Нативная работа на Apple M1/M2 без тормозной эмуляции x86_64
🎯 Оптимальная производительность на ARM-серверах (AWS Graviton, Azure Ampere)
🎯 Поддержка IoT и edge-устройств на ARM
🎯 Единый образ для всей инфраструктуры - не нужно париться с версионированием отдельных build-ов
Так что теперь, когда твоя команда работает на зоопарке из Intel MacBook-ов, Apple Silicon и Linux-серверов, ты можешь собрать один образ и быть уверенным - он заработает везде!
Попробовал multi-platform сборку? Ставь 🔥, чтобы я знал, что не зря потратил время на объяснение всех этих архитектурных заморочек!
Кстати, для серьезных пацанов и девчонков советую углубиться в buildx, который может собрать сразу несколько архитектур одной командой. Подробности работы с ним, а так же особенности строения манифестов под multiplatform образы, нюансы эмуляции при кросс-компиляции вы можете увидеть в бусти Devops сенпая!
🥷 Docker Ninja 🥷
🔥11👍6✍4❤1
Ты создаешь production-ready образ для Node.js приложения. В Dockerfile используете FROM node:18-alpine. Какую директиву стоит добавить для улучшения безопасности?
Anonymous Quiz
19%
RUN npm install -g npm@latest
6%
EXPOSE 3000
21%
WORKDIR /app
54%
USER node
❤1🔥1
В твоей компании возникла проблема: контейнеры запускаются, но процессы внутри них не отвечают на SIGTERM. В какой компонент Docker архитектуры ты полезешь, чтобы прочекать все за создание и управление жизненным циклом процессов контейнера?
Anonymous Quiz
16%
dockerd
37%
containerd
16%
runc
30%
Docker CLI
👌6
Направо пойдешь -... Налево пойдешь - ...
Коллеги, здравствуйте.
Мне очень неловко. Я надолго пропал, хотя обещал регулярно радовать вас контентом и новыми материалами. Это было связано с личными и рабочими обстоятельствами, но факт остаётся фактом: я не сдержал слово, и за это я искренне прошу прощения. Спасибо, кто остался🫶🏼
Планировал исправиться и вернуться с новыми силами, но теперь вмешался ещё и внешний фактор. Как вы знаете, в нашей стране появились серьёзные проблемы с доступом к Telegram. Канал перестал быть надёжной площадкой, где я могу гарантированно достучаться до каждого из вас.
Но бросать вас и обещанные темы я не хочу. Поэтому сейчас у меня к вам очень важный опрос.
Где вам было бы комфортно читать меня дальше? (выберите один или несколько вариантов, или предложите свой в директ канала)
➡️ ВКонтакте
➡️ Дзен
➡️ Max
➡️ Бесплатный доступ в boosty
Я очень дорожу вами и тем, что мы начали. Поэтому не хочу принимать решение за вас. Выберем платформы вместе, и там я уже буду отдавать все долги сполна — выпущу всё, что обещал, и даже больше.
Спасибо, что вы есть! Жду ваших голосов и идей в директ 👇
Коллеги, здравствуйте.
Мне очень неловко. Я надолго пропал, хотя обещал регулярно радовать вас контентом и новыми материалами. Это было связано с личными и рабочими обстоятельствами, но факт остаётся фактом: я не сдержал слово, и за это я искренне прошу прощения. Спасибо, кто остался🫶🏼
Планировал исправиться и вернуться с новыми силами, но теперь вмешался ещё и внешний фактор. Как вы знаете, в нашей стране появились серьёзные проблемы с доступом к Telegram. Канал перестал быть надёжной площадкой, где я могу гарантированно достучаться до каждого из вас.
Но бросать вас и обещанные темы я не хочу. Поэтому сейчас у меня к вам очень важный опрос.
Где вам было бы комфортно читать меня дальше? (выберите один или несколько вариантов, или предложите свой в директ канала)
Я очень дорожу вами и тем, что мы начали. Поэтому не хочу принимать решение за вас. Выберем платформы вместе, и там я уже буду отдавать все долги сполна — выпущу всё, что обещал, и даже больше.
P.S.
Переход в новые площадки не означает, что я перестану вести телегу. Этот канал все так же остается актуальным, просто мы с вам вместе придумаем удобные альтернативы.
P.S. 2
Я долго не хотел мириться с этой мыслью, но реальность оказалась сильнее. Изначально я планировал сделать несколько каналов по различным узким тематикам, чтобы каждый читал только то, что ему интересно.
Увы, придумывать такое количество тем для контента по узкой теме в одиночку оказалось не так то просто. Поэтому, отныне и навсегда данный канал будет называть Devops Senpai и будет покрывать все аспекты нашего непростого ремесла, а не только docker.
Спасибо, что вы есть! Жду ваших голосов и идей в директ 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👌2👎1
👎32👍2👏2🤡1
