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

Шпаргалка по 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

Коментарі

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

Колекції в Elixir

Списки Що таке список у Elixir У Elixir список — це впорядкована колекція елементів, реалізована як однозв’язний список . Це означає, що кожен елемент (вузол) зберігає посилання на наступний, але не на попередній. Така структура дозволяє швидко додавати елементи на початок списку, але повільно доступати до довільного елементу. У Java подібну структуру представляє LinkedList — частина Java Collections Framework. Вона реалізована як двозв’язний список, що забезпечує зручне додавання/видалення елементів з початку або кінця списку. Створення списків У Elixir список створюється за допомогою квадратних дужок: list = [1, 2, 3, 4] Додавання елементів У Elixir новий елемент можна додати тільки на початок списку за допомогою оператора | : # Elixir list = [2, 3, 4] new_list = [1 | list] # [1, 2, 3, 4] Доступ до елементів У Elixir немає прямого доступу до елементів за індексом, але це можна зробити через Enum.at : Enum.at([10, 20, 30], 1) # 20 Ітерація по списку У Elixir ...

Інструменти для роботи з 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...

Атоми в мові програмування Elixir

Атоми в Elixir Атоми є фундаментальною концепцією в Elixir , що відіграє ключову роль у створенні надійних та масштабованих систем. В Elixir це специфічний тип даних, який є константою , незмінною , ідентифікованою за своїм ім'ям . Отже, атом в Elixir — це іменована константа, що представляє себе. Уявіть, що ви даєте унікальне ім'я певній речі, і це ім'я завжди посилається саме на цю річ, і ніколи на щось інше. Наприклад, атом :ok завжди буде означати саме успішне завершення операції, а не якесь інше значення. Технічно, атоми є похідними від чисел . Кожен унікальний атом зберігається у таблиці атомів, і йому присвоюється унікальний цілочисельний ідентифікатор. Це робить їх надзвичайно ефективними для порівняння: замість порівняння рядків (що є повільною операцією), Elixir порівнює цілочисельні ідентифікатори. Переваги та особливості використання атомів Переваги атомів: Ефективність. Завдяки своєму числовому представленню, порівняння атомів є дуже швидким. Це осо...

Встановлення PostgreSQL на Ubuntu-сервер

Встановлення Оновлюємо пакети та встановлюємо PostgreSQL: sudo apt update sudo apt install -y postgresql postgresql-contrib Перевіряємо статус сервісу: sudo systemctl status postgresql Якщо PostgreSQL не запущений, запустимо його: sudo systemctl start postgresql sudo systemctl enable postgresql Налаштування безпеки Зміна пароля: sudo -u postgres psql У консолі PostgreSQL: ALTER USER postgres PASSWORD 'міцний_пароль'; \q \q - вихід з консолі. Список основних команд для роботи з PostgreSQL можна переглянути за посиланням. За замовчуванням PostgreSQL слухає localhost (127.0.0.1). Щоб дозволити доступ із зовнішніх машин, редагуємо конфігурацію: sudo nano /etc/postgresql/17/main/postgresql.conf (замість 17 вкажи версію PostgreSQL, яку встановлено) Шукаємо рядок: #listen_addresses = 'localhost' та замінюємо на listen_addresses = '*' Зберігаємо (Ctrl + X, Y, Enter). Тепер редагуємо pg_hba.conf: sudo nano /etc/postgresql/17/main/pg_hba.conf...

Основи Node.js

Що таке Node.js? Node.js — це середовище виконання JavaScript поза браузером, побудоване на рушії Google V8 . Воно дозволяє запускати JavaScript на сервері, створюючи серверні застосунки з високою продуктивністю. Основні характеристики: Однопотокова модель з неблокуючим I/O Асинхронне виконання за допомогою event loop Висока продуктивність у роботі з мережевими запитами npm — найбільший реєстр пакетів Що таке event loop? Event loop — це механізм в Node.js, який дозволяє неблокуючим асинхронним операціям виконуватись у середовищі з єдиним потоком. Він постійно перевіряє наявність подій у черзі та викликає відповідні колбеки. Як працює однопоточність у Node.js? Node.js використовує один потік (main thread) для обробки JavaScript-коду. Операції, які займають час (мережеві запити, читання з файлової системи), делегуються до системних API або thread pool, і після завершення результат повертається у основний потік через event loop. Приклад: асинхронна о...