Шпаргалка для повседневной работы с образами, контейнерами, томами и сетями
| Задача | Команда |
|---|---|
| Скачать образ | docker pull nginx:1.27 |
| Список локальных образов | docker images |
| Собрать образ из Dockerfile в текущей папке | docker build -t myapp:1.0 . |
| Собрать без кеша | docker build --no-cache -t myapp:1.0 . |
| Добавить тег к существующему образу | docker tag myapp:1.0 registry.example.com/myapp:1.0 |
| Отправить образ в реестр | docker push registry.example.com/myapp:1.0 |
| Посмотреть слои образа и размер каждого | docker history myapp:1.0 |
| Удалить образ | docker rmi myapp:1.0 |
| Задача | Команда |
|---|---|
| Запустить контейнер в фоне с портом и именем | docker run -d -p 8080:80 --name web nginx:1.27 |
| Одноразовый запуск, контейнер удалится после выхода | docker run --rm -it alpine sh |
| Передать переменные окружения | docker run -e APP_ENV=prod -e DB_HOST=db web-app |
| Запущенные контейнеры | docker ps |
| Все контейнеры, включая остановленные | docker ps -a |
| Логи, последние 100 строк и слежение | docker logs -f --tail 100 web |
| Логи только за последние 10 минут | docker logs --since 10m web |
| Зайти внутрь работающего контейнера | docker exec -it web sh |
| Выполнить одну команду без входа | docker exec web cat /etc/nginx/nginx.conf |
| Остановить, запустить, перезапустить | docker stop web, docker start web, docker restart web |
| Процессы внутри контейнера | docker top web |
| Потребление CPU и памяти в реальном времени | docker stats |
| Подробные метаданные (IP, монтирования, переменные) | docker inspect web |
| Скопировать файл из контейнера на хост | docker cp web:/etc/nginx/nginx.conf ./nginx.conf |
| Удалить контейнер | docker rm web (для работающего добавьте -f) |
| Задача | Команда |
|---|---|
| Именованный том для данных | docker run -d -v pgdata:/var/lib/postgresql/data postgres:16 |
| Примонтировать папку с хоста (только чтение) | docker run -v $(pwd)/config:/app/config:ro myapp |
| Список томов и сетей | docker volume ls, docker network ls |
| Создать свою сеть и подключить контейнеры по имени | docker network create backend, затем --network backend |
| Задача | Команда |
|---|---|
| Поднять стек в фоне | docker compose up -d |
| Пересобрать образы и поднять | docker compose up -d --build |
| Статус сервисов | docker compose ps |
| Логи одного сервиса | docker compose logs -f web |
| Остановить и удалить контейнеры и сети | docker compose down |
| То же, но с томами (данные удалятся) | docker compose down -v |
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}".docker system df покажет объём образов, контейнеров, томов и кеша сборки.docker stop $(docker ps -q).docker container prune и docker image prune.docker run --memory=512m --cpus=1 myapp.docker run -d --restart unless-stopped myapp.docker inspect -f '{{.NetworkSettings.IPAddress}}' web.docker run --rm -it --entrypoint sh myapp:1.0.docker system prune -a --volumes удаляет все неиспользуемые образы, контейнеры, сети и тома. Тома содержат данные баз, и их не вернуть. Перед такой очисткой проверьте, что важные данные сохранены.
nginx:1.27, а не latest) и, где нужно, digest вида image@sha256:.... Тогда одна и та же команда даст один и тот же образ на любой машине.