# Терминал
docker run -d --name myapp nginx # запуск в фоне с именем
docker ps / docker ps -a # список контейнеров
docker exec -it myapp bash # войти в контейнер
docker logs -f myapp # логи в реальном времени
docker cp file.txt myapp:/dst/ # копировать файл в контейнер
docker stop myapp && docker rm myapp # остановить и удалить
1. Управление контейнерами
docker run — создать и запустить
# Терминал
docker run [OPTIONS] IMAGE [COMMAND]
# Основные флаги:
# -d фоновый режим (detached)
# --name NAME задать имя контейнера
# -it интерактивный режим + псевдотерминал
# --rm удалить контейнер автоматически после завершения
# -e KEY=VALUE переменная окружения
# -p HOST:CONT пробросить порт (хост:контейнер)
# -v SRC:DST смонтировать том или директорию
# Примеры:
docker run ubuntu # запустить и сразу завершится
docker run -it ubuntu bash # интерактивный bash
docker run -d --name mynginx nginx # nginx в фоне
docker run -d --name mynginx -p 8080:80 nginx # с проброшенным портом
docker run -d --name myapp -e DEBUG=true myimage # с переменной окружения
docker run -d --name myapp --rm ubuntu tail -f /dev/null # удалится при остановке
# Терминал
docker ps # работающие контейнеры
docker ps -a # все контейнеры
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" # своя колонка
docker logs myapp # весь журнал
docker logs -f myapp # следить в реальном времени
docker logs --tail 50 myapp # последние 50 строк
docker logs --since 5m myapp # логи за последние 5 минут
docker top myapp # процессы внутри контейнера
docker diff myapp # изменения файловой системы (A/C/D)
docker inspect myapp # полный JSON с метаданными
docker inspect -f '{{.NetworkSettings.IPAddress}}' myapp # только IP-адрес
docker stats myapp # использование CPU/RAM/сеть в реальном времени
3. Взаимодействие с контейнером
# Терминал
# exec — выполнить команду в работающем контейнере
docker exec myapp ls / # одна команда
docker exec -it myapp bash # открыть bash-сессию
docker exec -it myapp sh # sh (если bash не установлен)
docker exec myapp cat /etc/os-release # без интерактива
# attach — подключиться к PID 1 (осторожно: Ctrl+C остановит контейнер)
docker attach myapp
# cp — копирование файлов
docker cp ./local-file.txt myapp:/app/ # хост → контейнер
docker cp myapp:/app/config.yaml ./ # контейнер → хост
# export — файловая система в архив
docker export myapp -o myapp-fs.tar # экспорт
# wait — ждать завершения
docker wait myapp # вернёт код выхода
# commit — создать образ из контейнера
docker commit myapp my-custom-image:v1 # сохранить изменения в образ
docker commit -m "added config" myapp my-img:v2 # с описанием
4. Управление образами
# Терминал
docker images # список образов на хосте
docker image ls # то же, современный синтаксис
docker images -a # включая промежуточные слои
docker history nginx # история слоёв образа
docker inspect nginx # полная информация об образе
docker tag nginx myrepo/nginx:1.25 # поставить тег
docker rmi nginx # удалить образ
docker rmi -f nginx # принудительно
docker image prune # удалить "висячие" (dangling) образы
docker image prune -a # удалить все неиспользуемые образы
docker commit myapp mynewimage:latest # образ из контейнера
docker import myfs.tar mynewimage # образ из .tar (нет истории слоёв)