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

Команда 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, щоб постійно вдосконалювати свої навички та досягати більших успіхів у роботі з контейнерами.

results matching ""

    No results matching ""