5.1 Основи команди docker exec
Команда docker exec — інструмент для взаємодії з працюючими контейнерами. Вона дозволяє запускати команди та відкривати інтерактивні сесії всередині контейнера. Це стане в нагоді для адміністративних задач, налагодження та моніторингу. У цій лекції ми детально розглянемо, як використовувати команду docker exec, які параметри доступні та наведемо приклади її практичного застосування.
Команда docker exec використовується для виконання команд у запущеному контейнері. З її допомогою можна зайти в контейнер і взаємодіяти з ним так, ніби ви працюєте безпосередньо з сервером.
Синтаксис
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Де:
-
CONTAINER: ім'я або ідентифікатор контейнера, у який ви хочете зайти. -
COMMAND: команда, яку ви хочете виконати всередині контейнера. ARG...: аргументи для команди.
Приклад базового використання
Цей приклад виконає команду ls /app всередині контейнера my_container, що дозволить побачити вміст директорії /app у контейнері.
docker exec my_container ls /app
5.2 Параметри команди docker exec
Команда docker exec підтримує кілька опцій, які дозволяють налаштувати поведінку виконання команд всередині контейнера.
1. Відкриття інтерактивної сесії
Щоб почати інтерактивну сесію, використовуйте комбінацію опцій -i (interactive) і -t (pseudo-TTY).
docker exec -it my_container /bin/bash
У цьому прикладі буде відкрито інтерактивний термінал Bash всередині контейнера my_container. Це дозволить виконувати команди в режимі реального часу.
2. Виконання команд у відриві
Якщо потрібно виконати команду в контейнері і не чекати її завершення, можна використовувати опцію -d (detached mode).
docker exec -d my_container touch /app/newfile.txt
У цьому прикладі команда створить порожній файл newfile.txt у директорії /app контейнера my_container. Контроль терміналу повертається одразу після виконання команди, не чекаючи її завершення.
3. Задання користувацького оточення
Ви можете передавати змінні оточення в контейнер за допомогою параметра -e.
docker exec -e MY_VAR=value my_container env
Цей приклад передасть змінну оточення MY_VAR у контейнер і запустить команду env, щоб показати всі змінні оточення всередині контейнера.
5.3 Приклади використання
Приклад 1: перегляд запущених процесів у контейнері
Цей приклад виконає команду ps aux всередині контейнера my_container і покаже список усіх запущених процесів.
docker exec my_container ps aux
Приклад 2: перевірка стану сервісу в контейнері
Цей приклад виконає команду service nginx status всередині контейнера my_container і покаже стан сервісу nginx.
docker exec my_container service nginx status
Приклад 3:встановлення пакета в контейнері
Цей приклад оновить список пакетів і встановить редактор vim всередині контейнера my_container.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Практичні сценарії
1. Адміністрування контейнерів
Команда docker exec дозволяє адміністраторам виконувати задачі обслуговування всередині контейнерів: редагувати конфігураційні файли, перевіряти логи або змінювати права доступу до файлів.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Відлагодження застосунків
Під час розробки та тестування застосунків команда docker exec допомагає розробникам перевіряти стан застосунку, виконувати відлагодження та аналізувати помилки.
docker exec -it my_container python /app/scripts/debug.py
3. Моніторинг та діагностика
За допомогою docker exec можна виконувати діагностичні команди та відслідковувати стан контейнера: перевіряти використання ресурсів, мережеві підключення та інші метрики.
docker exec my_container top
Ця команда запустить утиліту top всередині контейнера my_container і покаже поточне використання ресурсів.
5.5 Додаткові рекомендації
1. Забезпечення безпеки
При використанні команди docker exec важливо дотримуватись безпеки. Переконайтесь, що доступ до контейнерів обмежений і тільки авторизовані користувачі можуть виконувати команди всередині контейнерів.
2. Автоматизація задач
Ви можете автоматизувати рутинні задачі, використовуючи скрипти, які використовують команду docker exec. Це дозволяє створювати складні робочі процеси та автоматизувати адміністрування контейнерів.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Цей скрипт виконає команду uptime у всіх запущених контейнерах і виведе їх час роботи.
3. Логи та налагодження
Іноді виконання команди може завершитись помилкою. У таких випадках корисно переглянути логи контейнера для виявлення причини.
docker logs my_container
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ