Запуск контейнерів
Команда docker run є однією з найважливіших у Docker, дозволяючи запускати контейнери на основі Docker-образів. У цьому розділі ми розглянемо основні опції та аргументи цієї команди з прикладами їх використання.
Загальний синтаксис команди docker run
docker run [опції] <ім'я_образу> [команда] [аргументи]
Основні опції та аргументи
1. Фоновий режим (Detached Mode)
Опція -d дозволяє запускати контейнер у фоновому режимі.
docker run -d <ім'я_образу>
Приклад:
docker run -d myapp:latest
Запускає контейнер з образом myapp:latest у фоновому режимі.
2. Проброс портів (Port Mapping)
Опція -p дозволяє пробросити порти з контейнера на хост-машину.
docker run -p <локальний_порт>:<контейнерний_порт> <ім'я_образу>
Приклад:
docker run -d -p 8080:8080 myapp:latest
Запускає контейнер у фоновому режимі і пробросить порт 8080 на хост-машині до порту 8080 у контейнері.
3. Назва контейнера (Naming the Container)
Опція --name дає можливість задати власне ім'я контейнеру.
docker run --name <ім'я_контейнера> <ім'я_образу>
Приклад:
docker run --name myapp-container myapp:latest
Запускає контейнер з образом myapp:latest і надає йому ім'я myapp-container.
4. Змінні середовища (Environment Variables)
Опція -e дозволяє задавати змінні середовища для контейнера.
docker run -e <ключ>=<значення> <ім'я_образу>
Приклад:
docker run -e ENV=production myapp:latest
Запускає контейнер із зазначеною змінною середовища ENV зі значенням production.
5. Проброс томів (Volume Mapping)
Опція -v дозволяє пробросити локальну директорію або том Docker до директорії в контейнері.
docker run -v <локальний_шлях>:<контейнерний_шлях> <ім'я_образу>
Приклад:
docker run -v /host/data:/container/data myapp:latest
Запускає контейнер з образом myapp:latest і пробрасує локальну директорію /host/data до /container/data у контейнері.
6. Вказівка робочої директорії (Working Directory)
Опція -w дозволяє задавати робочу директорію для контейнера.
docker run -w <шлях> <ім'я_образу>
Приклад:
docker run -w /app myapp:latest
Запускає контейнер з образом myapp:latest і встановлює /app як робочу директорію.
7. Перезапуск контейнера (Restart Policy)
Опція --restart дозволяє задати політику перезапуску для контейнера.
docker run --restart <політика> <ім'я_образу>
Доступні політики:
no: Контейнер не перезапускатиметься (за замовчуванням).always: Контейнер завжди перезапускатиметься, навіть якщо він був вручну зупинений.on-failure: Контейнер перезапуститься у випадку виникнення помилки (нерівного нулю коду повернення).unless-stopped: Контейнер перезапускається, окрім ситуацій, коли він був вручну зупинений.
Приклад:
docker run --restart always myapp:latest
Запускає контейнер з образом myapp:latest і задає політику перезапуску always.
8. Обмеження ресурсів (Resource Limits)
Опції --cpus та --memory дозволяють задати обмеження на використання процесорних та пам'ятевих ресурсів для контейнера.
Обмеження процесора:
Опція --cpus задає максимальну кількість CPU, яке може використовувати контейнер.
docker run --cpus=<кількість> <ім'я_образу>
Приклад:
docker run --cpus="1.5" myapp:latest
Запускає контейнер з образом myapp:latest і дозволяє йому використовувати не більше ніж 1.5 CPU.
Обмеження пам'яті:
Опція --memory задає максимальну кількість пам'яті, яке може використовувати контейнер.
docker run --memory=<кількість> <ім'я_образу>
Приклад:
docker run --memory="512m" myapp:latest
Запускає контейнер з образом myapp:latest і дозволяє йому використовувати не більше ніж 512 MB оперативної пам'яті.
9. Запуск в інтерактивному режимі (Interactive Mode)
Опції -i та -t дозволяють запускати контейнер в інтерактивному режимі, відкриваючи доступ до командного рядка контейнера.
-i(interactive): Тримати стандартний ввід відкритим.-t(tty): Відкрити псевдо-TTY (термінал).
docker run -it <ім'я_образу> /bin/bash
Приклад:
docker run -it myapp:latest /bin/bash
Запускає контейнер з образом myapp:latest в інтерактивному режимі з доступом до командного рядка.
10. Видалення контейнера після завершення (Auto Remove)
Опція --rm автоматично видаляє контейнер після його завершення роботи.
docker run --rm <ім'я_образу>
Приклад:
docker run --rm myapp:latest
Запускає контейнер з образом myapp:latest і автоматично видаляє контейнер після завершення його роботи.
11. Проброс мереж (Network)
Опція --network дозволяє підключити контейнер до певної мережі Docker.
docker run --network=<назва_мережі> <ім'я_образу>
Приклад:
docker run --network=mynetwork myapp:latest
Запускає контейнер з образом myapp:latest і підключає його до мережі mynetwork.
Приклади повних команд
1. Запуск контейнера у фоновому режимі з пробросом портів
docker run -d -p 8080:8080 myapp:latest
Запускає контейнер у фоновому режимі та пов'язує порт 8080 на хості з портом 8080 в контейнері.
2. Запуск контейнера зі змінними середовища і томами
docker run -d -p 8080:8080 -e ENV=production -v /host/data:/container/data myapp:latest
Запускає контейнер у фоновому режимі, пробрасує порти, задає змінну середовища ENV зі значенням production та пробрасывает локальну директорію /host/data до на контейнерний шлях /container/data.
3. Запуск майже всього можливого
docker run -d \
-p 8080:8080 \
--name=myapp-container \
-e ENV=production \
--cpus="1.5" \
--memory="512m" \
-v /host/data:/container/data \
--net=mynetwork \
myapp:latest
Ця команда:
- Запускає контейнер у фоновому режимі (-d)
- Прив'язує локальний порт 8080 до контейнерного порту 8080
- Встановлює ім'я контейнера
myapp-container - Встановлює змінну середовища
ENVна значенняproduction - Обмежує процесор до 1.5 CPU
- Обмежує пам'ять до 512 MB
- Пробрасує локальну директорію
/host/dataу контейнерну директорію/container/data - Підключає контейнер до мережі
mynetwork - Вказує образ
myapp:latest
4. Запуск інтерактивного сеансу з автоматичним видаленням
docker run -it --rm \
-v /host/data:/container/data \
-w /container/data \
ubuntu /bin/bash
Ця команда:
- Запускає контейнер в інтерактивному режимі (-it)
- Автоматично видаляє контейнер після завершення роботи (--rm)
- Пробрасує локальну директорію
/host/dataу контейнерну директорію `/container/data
Резюме
У цьому розділі ми розглянули, як запускати контейнери за допомогою команди docker run, обговорили основні опції та аргументи, а також надали приклади використання. Важливо розуміти, що Docker - це гнучкий інструмент, і знання всіх можливостей docker run дає змогу краще керувати контейнерами, покращувати безпеку, продуктивність і керованість ваших додатків.
Читайте офіційну документацію і пробуйте нові сценарії застосування Docker, щоб постійно вдосконалювати свої навички та досягати більших успіхів у роботі з контейнерами.