Сообщество по докеру.
Рассказываем про docker и его применение в программировании и тестировании.
Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
Post #502
3.18K
Продвинутые команды Docker 💡
Ниже — рабочие one-liners и флаги, которые экономят время, трафик и нервы в проде.
🧱 Build/кэш/секреты
1) Включить BuildKit + передать секреты без попадания в слой:
DOCKER_BUILDKIT=1 docker build \
--secret id=GH_TOKEN,src=./token.txt \
--progress=plain -t app:dev .
2) Тянуть/пушить кэш из реестра (CI ускоряется в разы):
docker buildx build \
--cache-from=type=registry,ref=registry.local/app:cache \
--cache-to=type=registry,ref=registry.local/app:cache,mode=max \
-t registry.local/app:latest .
3) Multi-arch за один прогон:
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/org/app:1.0 --push .
🗂 Образы/тома/копирование
4) Архивировать том (бэкап артефактов/БД):
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -czf /b/data.tgz .'
Импорт обратно:
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -xzf /b/data.tgz'
5) Вытащить файл из контейнера без ssh:
docker cp myctr:/var/log/app.log ./app.log
⚙️ Ресурсы/лимиты/наблюдение
6) Жёстко ограничить CPU, RAM и swap:
docker run --cpus=1.5 -m 2g --memory-swap=3g myimg
7) Быстрые метрики без лишнего шума:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
🕵️ Логи/диагностика/сеть
😍 Логи за конкретный интервал с таймстампами:
docker logs --since 10m --until 2m --timestamps myctr | grep -i error
9) Netshoot внутри сети контейнера (DNS/HTTP/TLS-диагностика):
docker run --rm --network container:myctr nicolaka/netshoot curl -sI http://localhost:8080
🔖 Лейблы/уборка/инспект
10) Метить временные ресурсы и чистить их безопасно:
docker ps -aq -f "label=tmp=true" | xargs -r docker rm -f
docker images -q -f "label=tmp=true" | xargs -r docker rmi
11) Посмотреть реальный ENTRYPOINT/CMD образа:
docker inspect -f '{{json .Config.Entrypoint}} {{json .Config.Cmd}}' myimg
12) Prune с фильтрами (не трогаем ресурсы с label=keep):
docker system prune -a --volumes \
--filter "label!=keep" --filter "until=168h"
🧩 Compose (бонус)
13) Запуск только нужных профилей:
COMPOSE_PROFILES=api,worker docker compose up -d
14) Проброс build-аргументов и секретов в Compose:
DOCKER_BUILDKIT=1 docker compose build \
--build-arg GIT_SHA=$(git rev-parse --short HEAD) \
--secret id=NPM_TOKEN,src=.npm_token
Используйте лейблы и профили как основу политики «создал — пометь — убери». Это дисциплина, которая спасает прод.
Ниже — рабочие one-liners и флаги, которые экономят время, трафик и нервы в проде.
🧱 Build/кэш/секреты
1) Включить BuildKit + передать секреты без попадания в слой:
DOCKER_BUILDKIT=1 docker build \
--secret id=GH_TOKEN,src=./token.txt \
--progress=plain -t app:dev .
2) Тянуть/пушить кэш из реестра (CI ускоряется в разы):
docker buildx build \
--cache-from=type=registry,ref=registry.local/app:cache \
--cache-to=type=registry,ref=registry.local/app:cache,mode=max \
-t registry.local/app:latest .
3) Multi-arch за один прогон:
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/org/app:1.0 --push .
🗂 Образы/тома/копирование
4) Архивировать том (бэкап артефактов/БД):
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -czf /b/data.tgz .'
Импорт обратно:
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -xzf /b/data.tgz'
5) Вытащить файл из контейнера без ssh:
docker cp myctr:/var/log/app.log ./app.log
⚙️ Ресурсы/лимиты/наблюдение
6) Жёстко ограничить CPU, RAM и swap:
docker run --cpus=1.5 -m 2g --memory-swap=3g myimg
7) Быстрые метрики без лишнего шума:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
🕵️ Логи/диагностика/сеть
😍 Логи за конкретный интервал с таймстампами:
docker logs --since 10m --until 2m --timestamps myctr | grep -i error
9) Netshoot внутри сети контейнера (DNS/HTTP/TLS-диагностика):
docker run --rm --network container:myctr nicolaka/netshoot curl -sI http://localhost:8080
🔖 Лейблы/уборка/инспект
10) Метить временные ресурсы и чистить их безопасно:
docker ps -aq -f "label=tmp=true" | xargs -r docker rm -f
docker images -q -f "label=tmp=true" | xargs -r docker rmi
11) Посмотреть реальный ENTRYPOINT/CMD образа:
docker inspect -f '{{json .Config.Entrypoint}} {{json .Config.Cmd}}' myimg
12) Prune с фильтрами (не трогаем ресурсы с label=keep):
docker system prune -a --volumes \
--filter "label!=keep" --filter "until=168h"
🧩 Compose (бонус)
13) Запуск только нужных профилей:
COMPOSE_PROFILES=api,worker docker compose up -d
14) Проброс build-аргументов и секретов в Compose:
DOCKER_BUILDKIT=1 docker compose build \
--build-arg GIT_SHA=$(git rev-parse --short HEAD) \
--secret id=NPM_TOKEN,src=.npm_token
Используйте лейблы и профили как основу политики «создал — пометь — убери». Это дисциплина, которая спасает прод.
- ❤ 6
- 🔥 3
- 👍 2












