Шпаргалка по Docker

Все команды курса «Docker для начинающих», собранные по задачам. В колонке «Урок» — где команда разобрана подробно. Сохраните страницу в закладки.

Контейнеры: запустить и остановить

Команда Что делает Урок
docker run -d --name web -p 8080:80 nginx:alpine запустить новый контейнер в фоне, с именем и портом 2
docker run --rm -it alpine sh временный контейнер с командной строкой, удалится после выхода 2
docker run -e ИМЯ=значение … передать в контейнер переменную окружения 5
docker stop web остановить контейнер 2
docker start web запустить остановленный контейнер снова 2
docker rm web удалить остановленный контейнер 2
docker rm -f web остановить и удалить одной командой 5

Контейнеры: посмотреть, что происходит

Команда Что делает Урок
docker ps работающие контейнеры 2
docker ps -a все контейнеры, со статусом и кодом выхода 2
docker logs web журнал программы в контейнере 2
docker logs -f web журнал в реальном времени, выход — Ctrl + C 2
docker logs --tail 20 web последние 20 строк журнала 8
docker exec -it web sh командная строка внутри работающего контейнера 8
docker inspect web все настройки контейнера: тома, порты, переменные 8
docker stats процессор и память контейнеров в реальном времени 8
docker port web какие порты опубликованы 6

Образы

Команда Что делает Урок
docker pull postgres:16 скачать образ 3
docker images образы на компьютере 3
docker rmi alpine:latest удалить образ 3
docker build -t my-site:1.0 . собрать образ из Dockerfile в текущей папке 4

Имя образа — реестр/имя:тег. Без тега Docker подставляет latest, поэтому в работе версию указывают явно.

Dockerfile

Инструкция Что делает Урок
FROM nginx:alpine базовый образ 4
WORKDIR /app рабочая папка внутри образа 4
COPY . . скопировать файлы из папки сборки в образ 4
RUN pip install -r requirements.txt выполнить команду при сборке 4
EXPOSE 80 отметить порт программы — подсказка, порт не открывает 4
CMD ["python", "app.py"] что запускать при старте контейнера 4

Редко меняющиеся шаги — выше, часто меняющиеся — ниже: так сборка берёт слои из кэша. Лишнее исключает файл .dockerignore.

Данные: тома и папки

Команда Что делает Урок
-v pgdata:/var/lib/postgresql/data подключить том к папке в контейнере 5
-v "$(pwd)":/usr/share/nginx/html:ro подключить текущую папку только для чтения; в PowerShell — "${PWD}" 5
docker volume ls список томов 5
docker volume inspect pgdata подробности о томе 5
docker volume rm pgdata удалить том вместе с данными 5

Сеть и порты

Команда Что делает Урок
-p 8080:80 порт компьютера : порт в контейнере 6
-p 127.0.0.1:5432:5432 открыть порт только для своего компьютера 6
docker network create shop создать сеть: в ней контейнеры видят друг друга по имени 6
--network shop подключить контейнер к сети при запуске 6
docker network ls список сетей 6
docker network rm shop удалить сеть 6

Docker Compose

Команда Что делает Урок
docker compose up -d поднять все сервисы из compose.yaml в фоне 7
docker compose up -d --build пересобрать образы и поднять 7
docker compose ps контейнеры проекта 7
docker compose logs -f логи всех сервисов в реальном времени 7
docker compose stop остановить, не удаляя 7
docker compose down остановить и удалить контейнеры и сеть, тома остаются 7
docker compose down -v то же и удалить тома вместе с данными 7
docker compose config итоговый файл с подставленными переменными 7

Пароли — в файле .env рядом с compose.yaml, а сам .env — в .gitignore.

Уборка

Команда Что делает Урок
docker system df сколько места занимает Docker 8
docker container prune удалить все остановленные контейнеры 2
docker image prune удалить образы без тега и контейнеров 3
docker volume prune удалить неподключённые тома без имени 8
docker system prune удалить остановленные контейнеры, лишние сети, образы без тега и кэш сборки 8

Флаги -a и --volumes у docker system prune удаляют гораздо больше — перед ними проверьте, что ничего нужного не пропадёт.

Если не работает

Признак Что сделать Урок
статус Exited (1) прочитать docker logs 8
port is already allocated выбрать другой порт или остановить контейнер, который его занял 6
container name … is already in use удалить старый контейнер или выбрать другое имя 2
Cannot connect to the Docker daemon запустить Docker Desktop или службу Docker 8