Содержание
Что такое контейнер
Контейнер — изолированный процесс со своей файловой системой и зависимостями. В отличие от виртуальной машины, не включает целую ОС — запускается за секунды и весит мегабайты.
Аналогия: контейнер — как zip-архив с приложением и всем необходимым для его запуска.
Установка
Скачай Docker Desktop с официального сайта. После установки:
docker --version
# Docker version 28.x.x
docker run hello-world
# Если видишь "Hello from Docker!" — всё работает
Основные команды
# Запустить контейнер
docker run nginx
# Запустить в фоне (-d) и пробросить порт (-p)
docker run -d -p 8080:80 nginx
# Открой http://localhost:8080
# Список запущенных контейнеров
docker ps
# Остановить контейнер
docker stop <container_id>
# Список образов
docker images
Dockerfile — свой образ
Здесь только базовый пример — подробный разбор инструкций и multi-stage сборки есть в отдельной статье про Dockerfile.
# Берём базовый образ
FROM node:22-alpine
# Рабочая директория внутри контейнера
WORKDIR /app
# Копируем package.json и ставим зависимости
COPY package*.json ./
RUN npm install
# Копируем весь код
COPY . .
# Открываем порт
EXPOSE 3000
# Команда запуска
CMD ["node", "index.js"]
# Собрать образ
docker build -t my-app .
# Запустить
docker run -p 3000:3000 my-app
docker-compose — несколько сервисов
Продвинутые сценарии — healthchecks, профили, зависимости — в статье про Docker Compose. А когда дойдёт до продакшна, есть гайд по деплою на VPS.
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- DATABASE_URL=postgres://user:pass@db:5432/mydb
db:
image: postgres:16
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
# Запустить всё
docker-compose up -d
# Остановить
docker-compose down
💡 Добавь
.dockerignoreрядом сDockerfileи включи тудаnode_modules,.git,.env— они не должны попадать в образ.
Обсуждение
Пока нет комментариев. Будьте первым.