Статьи → DevOps → Docker
DevOps Актуальная

Docker

Andrew ⚡ Администратор
(обновлено 07.08.2026)
250 v1.0

🐳 Docker (Установка и настройка)

⚠️ ВНИМАНИЕ: Эта статья носит исключительно напоминалку (шпаргалку) по Docker в Astra Linux.
ℹ️ О версиях Astra Linux:
  • Astra Linux 1.6 — основа Debian 9 (устаревшая, EOL)
  • Astra Linux 1.7 — основа Debian 10 (устаревшая)
  • Astra Linux 1.8 — основа Debian 12 (актуальная, рекомендуется)

⚠️ Данная инструкция актуальна для 1.6 , 1.7 и 1.8. Для версии 1.8 рекомендуется использовать стандартную установку Docker из официального репозитория.

📦 Установка Docker

sudo apt install -y docker.io

Добавляем пользователя в группу docker:

sudo -S usermod -aG docker $USER

📦 Установка, включение и применение Docker для работы в непривилегированном (rootless) режиме

sudo apt install -y docker.io rootless-helper-astra

Добавляем пользователя в группу docker:

sudo -S usermod -aG docker $USER

Запускаем службу docker в rootless-режиме:

sudo systemctl start rootless-docker@$USER@0:0:0:0
sudo systemctl enable rootless-docker@$USER@0:0:0:0

Вводим команду rootlessenv и под ней работаем:

rootlessenv

🐙 Установка Docker Compose v2

📌 Docker Compose v2 (рекомендуемый способ):
sudo apt update
sudo apt install -y docker-compose-v2

Проверка установки:

docker compose version
📌 Docker Compose v1 (устаревший):
sudo apt install docker-compose

Проверка установки:

docker-compose --version

🐙 Команды Docker Compose

🚀 Основные команды

Команда Описание
docker compose up -d Запустить все сервисы в фоне
docker compose down Остановить и удалить контейнеры
docker compose ps Список контейнеров проекта
docker compose logs -f Просмотр логов в реальном времени
docker compose exec <service> bash Зайти внутрь контейнера сервиса
docker compose restart Перезапустить все сервисы
docker compose down -v Остановить и удалить контейнеры + volumes
docker compose build --no-cache Пересобрать образы без кэша

📄 Примеры docker-compose.yml (шаблоны)

🌐 Nginx + PHP (простой LEMP)

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  php:
    image: php:8.2-fpm-alpine
    volumes:
      - ./html:/var/www/html
    restart: unless-stopped

🐘 PostgreSQL + pgAdmin

services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    restart: unless-stopped

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: admin
    ports:
      - "5050:80"
    restart: unless-stopped

volumes:
  pgdata:

📊 Redis + Python (Celery)

services:
  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    restart: unless-stopped

  worker:
    build: .
    command: celery -A tasks worker --loglevel=info
    depends_on:
      - redis
    environment:
      REDIS_URL: redis://redis:6379
    restart: unless-stopped

🔧 Docker Compose с кастомным Dockerfile

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
    volumes:
      - ./app:/usr/src/app
    restart: unless-stopped

📄 Примеры Dockerfile (шаблоны)

🐍 Python (FastAPI/Flask)

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

📦 Node.js (Express)

FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

☕ Java (Spring Boot)

FROM openjdk:17-slim

WORKDIR /app

COPY target/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]

🐘 PHP (Apache)

FROM php:8.2-apache

RUN docker-php-ext-install pdo pdo_mysql

COPY . /var/www/html/

EXPOSE 80

🔷 Go (многостадийная сборка)

# Сборка
FROM golang:1.21-alpine AS builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o myapp .

# Финальный образ
FROM alpine:latest

WORKDIR /root/
COPY --from=builder /app/myapp .

EXPOSE 8080

CMD ["./myapp"]

🐋 Команды Docker

🌐 Сети в Docker

Команда Описание
docker network create название_сети Создать сеть
docker network ls Посмотреть имеющиеся сети
docker network rm название_сети Удалить сеть

🖼️ Image (образы)

Команда Описание
docker image ls Список образов
docker build -t имя . Собрать образ из Dockerfile
docker rmi -f имя_образа Удалить образ
docker save имя > имя.tar Экспорт образа в архив
docker load -i имя.tar Импорт образа из архива

📦 Container

Команда Описание
docker run -d -p 8080:80 nginx Запуск контейнера
docker stop имя Остановка
docker rm имя Удаление
docker ps -a Все контейнеры (включая остановленные)
docker exec -it имя bash Войти в контейнер
docker commit CONTAINER_ID новый_образ Сохранить контейнер в образ

💾 Volume

Команда Описание
docker volume create имя Создать том
docker volume ls Список томов
docker volume rm имя Удалить том
docker run -v my_volume:/data nginx Привязать том к контейнеру

🔧 Полезные команды

Команда Описание
docker cp /путь/файл контейнер:/путь/в/контейнере Скопировать файл в контейнер
docker system prune -a Очистить неиспользуемые образы, контейнеры, тома
docker logs -f имя Посмотреть логи контейнера
0
Andrew

DevOps Engineer

1 50 статей
Комментарии (0)
Войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!