Переглянути пости за тегами

15 Bash-скриптів для спрощення керування контейнерами Docker

  • 3 хв читання
  • 26 Січ, 2025

1. Зупинка всіх активних контейнерів

Зупиніть усі поточні активні контейнери однією командою:

#!/bin/bash
# Зупинити всі активні контейнери
docker stop $(docker ps -q)
  • docker ps -q: Отримує ідентифікатори активних контейнерів.
  • docker stop: Зупиняє ці контейнери за їхніми ID.

2. Автоматичний запуск всіх контейнерів

Після перезавантаження системи або обслуговування швидко перезапустіть усі контейнери:

#!/bin/bash
# Запустити всі зупинені контейнери
docker start $(docker ps -aq)
  • docker ps -aq: Повертає список всіх контейнерів, включаючи зупинені.
  • docker start: Запускає контейнери за їхніми ID.

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

Очистіть місце на диску, видаливши зупинені контейнери:

#!/bin/bash
# Видалити всі зупинені контейнери
docker rm $(docker ps -aq -f "status=exited")
  • docker ps -aq -f "status=exited": Фільтрує тільки зупинені контейнери.
  • docker rm: Видаляє ці контейнери.

4. Моніторинг використання ресурсів контейнерів

Відстежуйте використання CPU, пам'яті та мережі в режимі реального часу:

#!/bin/bash
# Моніторинг ресурсів усіх активних контейнерів
docker stats --all
  • docker stats: Відображає живу статистику контейнерів.
  • --all: Включає як активні, так і зупинені контейнери.

5. Видалення "висячих" образів

Звільніть місце на диску, видаливши невикористовувані образи:

#!/bin/bash
# Видалити "висячі" образи
docker rmi $(docker images -q -f "dangling=true")
  • docker images -q -f "dangling=true": Знаходить невикористовувані образи.
  • docker rmi: Видаляє ці образи.

6. Резервне копіювання даних контейнера

Створіть резервну копію файлової системи контейнера у вигляді tar-архіву:

#!/bin/bash
# Резервне копіювання даних контейнера
CONTAINER_ID=$1
BACKUP_FILE="${CONTAINER_ID}_backup_$(date +%F).tar"
docker export $CONTAINER_ID > $BACKUP_FILE
echo "Резервна копія збережена у $BACKUP_FILE"
  • docker export: Зберігає файлову систему контейнера у файл.
  • Вкажіть ID контейнера як аргумент.

7. Відновлення контейнера з резервної копії

Відновіть контейнер із tar-архіву:

#!/bin/bash
# Відновлення контейнера з резервної копії
BACKUP_FILE=$1
docker import $BACKUP_FILE restored_container:latest
echo "Контейнер відновлено як 'restored_container:latest'"
  • docker import: Перетворює tar-файл у Docker-образ.
  • Цей образ можна використовувати для створення нових контейнерів.

8. Тимчасовий запуск контейнера

Запустіть контейнер, який автоматично видалиться після зупинки:

#!/bin/bash
# Запустити контейнер і видалити після завершення
IMAGE_NAME=$1
docker run --rm $IMAGE_NAME
  • --rm: Видаляє контейнер після його зупинки.
  • Ідеально підходить для одноразових завдань.

9. Автоматичне очищення невикористаних ресурсів

Заплануйте регулярне очищення невикористаних ресурсів Docker:

#!/bin/bash
# Очищення невикористаних ресурсів
docker system prune -f --volumes
  • docker system prune: Видаляє невикористані контейнери, образи та мережі.
  • --volumes: Видаляє також невикористовувані томи.

10. Перегляд логів всіх контейнерів

Перегляньте логи з кількох контейнерів в одному виводі:

#!/bin/bash
# Відображення логів усіх контейнерів
docker ps -q | xargs -I {} docker logs {}
  • docker ps -q: Отримує ID активних контейнерів.
  • xargs: Передає ID у команду docker logs.

11. Перезапуск всіх контейнерів

Швидко перезапустіть усі активні контейнери:

#!/bin/bash
# Перезапустити всі контейнери
docker restart $(docker ps -q)
  • docker restart: Зупиняє та запускає контейнери за їхніми ID.

12. Оновлення запущених контейнерів

Оновіть контейнери до останньої версії їхнього образу:

#!/bin/bash
# Оновити запущений контейнер
CONTAINER_NAME=$1
IMAGE_NAME=$(docker inspect --format='{{.Config.Image}}' $CONTAINER_NAME)
docker pull $IMAGE_NAME
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
docker run -d --name $CONTAINER_NAME $IMAGE_NAME
  • docker inspect: Отримує ім'я образу контейнера.
  • Скрипт завантажує останній образ і відтворює контейнер.

13. Копіювання файлів із контейнера

Експортуйте файли або каталоги з контейнера на хост:

#!/bin/bash
# Копіювати файли з контейнера
CONTAINER_ID=$1
SOURCE_PATH=$2
DEST_PATH=$3
docker cp $CONTAINER_ID:$SOURCE_PATH $DEST_PATH
echo "Скопійовано $SOURCE_PATH з $CONTAINER_ID у $DEST_PATH"
  • docker cp: Переносить файли між контейнером і хостом.
  • Вкажіть ID контейнера, шлях джерела та місце призначення.

14. Перегляд відкритих портів

Перевірте, які порти відкриті у запущених контейнерах:

#!/bin/bash
# Показати відкриті порти
 docker ps --format '{{.ID}}: {{.Ports}}'
  • docker ps --format: Виводить ID контейнерів і їхні порти.

15. Автоматичний перезапуск контейнера

Налаштуйте контейнер на автоматичний перезапуск після збою:

#!/bin/bash
# Налаштування автоматичного перезапуску контейнера
CONTAINER_NAME=$1
docker update --restart always $CONTAINER_NAME
echo "$CONTAINER_NAME тепер автоматично перезапускається у разі збою."
  • docker update --restart always: Задає політику перезапуску.
  • Вкажіть ім'я контейнера як аргумент.