Перейти до основного вмісту

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

Docker - Робота з образами

Завантаження образу

docker pull nginx
docker pull nginx:latest
docker pull nginx:1.21

Список локальних образів

docker images
docker image ls

Видалення образу

docker rmi nginx
docker rmi nginx:1.21
docker image rm nginx

Видалення всіх невикористовуваних образів

docker image prune
docker image prune -a

Побудова образу з Dockerfile

docker build -t myapp:1.0 .
docker build -t myapp:latest -f Dockerfile.prod .

Тегування образу

docker tag myapp:1.0 myapp:latest
docker tag myapp:1.0 myregistry.com/myapp:1.0

Відправлення образу в registry

docker push myregistry.com/myapp:1.0

Docker - Робота з контейнерами

Запуск контейнера

docker run nginx
docker run -d nginx
docker run -d --name mynginx nginx
docker run -d -p 8080:80 nginx
docker run -d -p 8080:80 -v /host/path:/container/path nginx
docker run -d -e MY_VAR=value nginx

Список контейнерів

docker ps
docker ps -a
docker ps -q

Зупинка контейнера

docker stop mynginx
docker stop container_id

Запуск зупиненого контейнера

docker start mynginx

Перезапуск контейнера

docker restart mynginx

Видалення контейнера

docker rm mynginx
docker rm -f mynginx

Видалення всіх зупинених контейнерів

docker container prune

Логи контейнера

docker logs mynginx
docker logs -f mynginx
docker logs --tail 100 mynginx

Виконання команди в контейнері

docker exec mynginx ls /etc
docker exec -it mynginx bash
docker exec -it mynginx sh

Копіювання файлів

docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp ./index.html mynginx:/usr/share/nginx/html/

Інспекція контейнера

docker inspect mynginx
docker inspect mynginx | grep IPAddress

Статистика використання ресурсів

docker stats
docker stats mynginx

Процеси в контейнері

docker top mynginx

Docker - Мережі

Список мереж

docker network ls

Створення мережі

docker network create mynetwork
docker network create --driver bridge mynetwork

Підключення контейнера до мережі

docker network connect mynetwork mynginx

Відключення контейнера від мережі

docker network disconnect mynetwork mynginx

Видалення мережі

docker network rm mynetwork

Інспекція мережі

docker network inspect mynetwork

Docker - Volumes (Томи)

Список томів

docker volume ls

Створення тому

docker volume create myvolume

Використання тому при запуску

docker run -d -v myvolume:/data nginx

Видалення тому

docker volume rm myvolume

Видалення всіх невикористовуваних томів

docker volume prune

Інспекція тому

docker volume inspect myvolume

Docker - Очищення системи

Видалення всього невикористовуваного

docker system prune
docker system prune -a
docker system prune -a --volumes

Інформація про використання диску

docker system df

Docker Compose

Запуск сервісів

docker-compose up
docker-compose up -d
docker-compose up --build

Зупинка сервісів

docker-compose stop
docker-compose down
docker-compose down -v

Перезапуск сервісів

docker-compose restart
docker-compose restart service_name

Список контейнерів

docker-compose ps

Логи сервісів

docker-compose logs
docker-compose logs -f
docker-compose logs service_name

Виконання команди в сервісі

docker-compose exec service_name bash
docker-compose exec service_name ls /app

Запуск одноразової команди

docker-compose run service_name command
docker-compose run --rm service_name python manage.py migrate

Побудова образів

docker-compose build
docker-compose build --no-cache
docker-compose build service_name

Завантаження образів

docker-compose pull

Масштабування сервісів

docker-compose up -d --scale service_name=3

Валідація docker-compose.yml

docker-compose config

Використання конкретного файлу

docker-compose -f docker-compose.prod.yml up -d

Пауза/Розпауза сервісів

docker-compose pause
docker-compose unpause

Коментарі

Популярні публікації

Дамп бази даних Postgresql локально

Що потрібно встановити локально (Ubuntu) Встанови клієнтські утиліти PostgreSQL: pg_dump , psql , pg_restore . sudo apt update sudo apt install postgresql-client Кроки міграції Ідея: не зберігати дамп на серверах. Зробити дамп з віддаленого сервера на свій локальний ПК, потім передати його на новий сервер і там відновити. 1) Створення дампу з віддаленого сервера локально pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB -f dump_file.dump Пояснення ключів: -h (хост), -U (користувач), -Fc (custom format), -d (БД), -f (вихідний файл локально). 1.1) Варіант з розбиттям на частини (якщо треба) pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB | split -b 10G - dump_file.dump.part_ Це створить локально файли типу dump_file.dump.part_aa , dump_file.dump.part_ab тощо. 2) Передача дампу на новий сервер Один файл: scp dump_file.dump NEW_USER@NEW_SERVER_IP:/tmp/ Або частинами: scp dump_file.dump.part_* NEW_USER@NEW_SERVER_IP:/tmp/ 3) Збирання файл...

Основи Next.js

Що таке Next.js? Next.js — це прогресивний фреймворк для розробки веб-застосунків на основі React. Він розширює можливості React, додаючи готову інфраструктуру для Server-Side Rendering (SSR), генерації статичних сторінок, маршрутизації через файлову систему, а також можливість створювати backend-ендпоінти прямо в проєкті. Чому він став популярним? Next.js швидко здобув популярність завдяки тому, що пропонує: SEO-дружні сторінки завдяки SSR / SSG; швидкий перший рендер (First Page Load); просту маршрутизацію без налаштування; розгортання в один клік через Vercel; вбудовану оптимізацію зображень та продуктивності. Чим відрізняється від класичного React У класичному React ми отримуємо лише клієнтську бібліотеку для побудови UI-компонентів. Усе інше (SSR, маршрути, API) треба налаштовувати вручну або через сторонні бібліотеки (наприклад, React Router, Redux, Express, etc.). Next.js — це уже повноцінний фреймворк. Він одразу має: серверний рендеринг...

ООП у TypeScript

Короткий вступ TypeScript додає статичну типізацію поверх JavaScript і підтримує класичні концепти ООП: класи , успадкування , інтерфейси , інкапсуляцію , поліморфізм та абстракції . Нижче — практичні приклади та пояснення. Класи — декларація, конструктор, властивості та методи class Person { public name: string; private age: number; protected email?: string; // необов’язкове static species = 'Homo sapiens'; constructor(name: string, age: number, email?: string) { this.name = name; this.age = age; this.email = email; } public greet(): string { return `Hi, I'm ${this.name}.`; } private getBirthYear(currentYear: number): number { return currentYear - this.age; } } const p = new Person('Ivan', 30, 'ivan@example.com'); console.log(p.greet()); // console.log(p.age); // помилка: 'age' приватне console.log(Person.species); Успадкування і перевизначення (extends, super) class Employee extends Person { ...

Створення проєкту на TypeScript, модулі

Крок 1. Ініціалізація проєкту Спочатку створимо нову теку та ініціалізуємо Node.js-проєкт за допомогою npm : mkdir my-typescript-app cd my-typescript-app npm init -y Крок 2. Встановлення TypeScript Додаємо TypeScript як dev-залежність: npm install --save-dev typescript ts-node @types/node - typescript — компілятор TypeScript - ts-node — дозволяє запускати TS-файли без попередньої компіляції - @types/node — типи для стандартних Node.js API Крок 3. Створення файлу tsconfig.json Ініціалізуємо конфігурацію TypeScript: npx tsc --init Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020", // Версія JS у вихідному коді "module": "CommonJS", // Система модулів (для Node.js) "rootDir": "src", // Вхідна папка з TypeScript-кодом "outDir": "dist", // Куди компілюється код JS "str...

Інструменти для роботи з Node.js

Що таке npm? npm (Node Package Manager) — це офіційний пакетний менеджер для Node.js . Він дозволяє: Встановлювати сторонні бібліотеки та фреймворки Керувати залежностями проєкту Запускати скрипти (команди) через package.json Приклад ініціалізації проєкту з npm npm init -y Файл package.json (скорочений приклад) { "name": "my-project", "version": "1.0.0", "scripts": { "start": "ts-node src/index.ts", "build": "tsc" }, "dependencies": { "express": "^4.18.0" }, "devDependencies": { "typescript": "^5.0.0", "ts-node": "^10.0.0" } } Що таке tsconfig.json? tsconfig.json — це файл конфігурації для компілятора TypeScript, який визначає, як слід компілювати код. Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020...