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