DevOps инструменты

Шпаргалка по Docker, Docker Compose, Kubernetes, Helm, GitHub Actions

🐳 Docker

Образы

Команда Описание
docker build -t image:tag . Собрать образ
docker images Список образов
docker rmi image:tag Удалить образ
docker pull image:tag Скачать образ
docker push image:tag Загрузить образ в registry

Контейнеры

Команда Описание
docker run -d image:tag Запустить контейнер в фоне
docker run -p 8080:80 image Запустить с пробросом порта
docker run -v /host:/container image Запустить с volume
docker run -e KEY=value image Запустить с переменной окружения
docker ps Список запущенных контейнеров
docker ps -a Список всех контейнеров
docker stop container Остановить контейнер
docker start container Запустить остановленный контейнер
docker rm container Удалить контейнер
docker exec -it container sh Выполнить команду в контейнере
docker logs container Логи контейнера
docker logs -f container Логи в реальном времени

Volumes и Networks

Команда Описание
docker volume ls Список volumes
docker volume create name Создать volume
docker network ls Список сетей
docker network create name Создать сеть

Очистка

Команда Описание
docker system prune Удалить неиспользуемые данные
docker system prune -a Удалить все неиспользуемые образы
docker container prune Удалить остановленные контейнеры
docker volume prune Удалить неиспользуемые volumes

🐙 Docker Compose

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

Команда Описание
docker-compose up Запустить сервисы
docker-compose up -d Запустить в фоне
docker-compose up --build Пересобрать и запустить
docker-compose down Остановить и удалить контейнеры
docker-compose down -v Остановить и удалить volumes
docker-compose ps Список сервисов
docker-compose logs Логи всех сервисов
docker-compose logs service Логи конкретного сервиса
docker-compose exec service sh Выполнить команду в сервисе
docker-compose restart service Перезапустить сервис

Profiles и зависимости

Команда Описание
docker-compose --profile dev up Запустить сервисы с профилем
docker-compose config Показать финальную конфигурацию

Пример docker-compose.yml

version: "3.8"
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    depends_on:
      - db
    profiles:
      - production
  
  db:
    image: postgres:15
    environment:
      - POSTGRES_DB=mydb
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

☸️ Kubernetes

Pods

Команда Описание
kubectl get pods Список pods
kubectl get pods -n namespace Pods в namespace
kubectl describe pod name Детали pod
kubectl delete pod name Удалить pod
kubectl apply -f manifest.yaml Применить манифест

Логи и выполнение

Команда Описание
kubectl logs pod-name Логи pod
kubectl logs -f pod-name Логи в реальном времени
kubectl logs -c container pod-name Логи конкретного контейнера
kubectl exec -it pod-name -- sh Выполнить команду в pod
kubectl port-forward pod-name 8080:80 Проброс порта

Contexts и ресурсы

Команда Описание
kubectl config get-contexts Список contexts
kubectl config use-context name Переключить context
kubectl get all Все ресурсы
kubectl get deployments Список deployments
kubectl get services Список services

⚓ Helm

Установка и обновление

Команда Описание
helm install release chart Установить chart
helm install -f values.yaml release chart Установить с values файлом
helm upgrade release chart Обновить release
helm rollback release revision Откатить к версии
helm uninstall release Удалить release

Шаблоны и values

Команда Описание
helm template chart Рендерить шаблоны
helm get values release Получить values release
helm list Список установленных releases

Пример values.yaml

replicaCount: 3

image:
  repository: nginx
  tag: "1.21"

service:
  type: LoadBalancer
  port: 80

resources:
  limits:
    cpu: 500m
    memory: 512Mi

🔄 GitHub Actions / CI

Базовый workflow

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm install
      - run: npm test

Переменные окружения

Синтаксис Описание
env: KEY: value Переменные на уровне job
env: KEY: ${{ secrets.SECRET }} Использование secrets
${{ env.KEY }} Использование переменной
${{ github.ref }} Текущая ветка/тег
${{ github.sha }} SHA коммита

Кэширование

- name: Cache dependencies
  uses: actions/cache@v3
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

Матрица и условия

strategy:
  matrix:
    node-version: [16, 18, 20]
    os: [ubuntu-latest, windows-latest]

steps:
  - name: Run tests
    if: matrix.os == 'ubuntu-latest'
    run: npm test

Артефакты

- name: Upload artifact
  uses: actions/upload-artifact@v3
  with:
    name: dist
    path: dist/

- name: Download artifact
  uses: actions/download-artifact@v3
  with:
    name: dist