Выбор стартовой команды для образа Docker

Введение в Docker

Tim Sangster

Software Engineer @ DataCamp

Что такое стартовая команда?

Образ hello-world выводит текст и завершает работу.

docker run hello-world
Hello from Docker!

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon created a new container from the hello-world image which runs the
    executable that produces the output you are currently reading.
 3. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
Введение в Docker

Что такое стартовая команда?

Образ с Python может запускать Python при старте.

docker run python3-sandbox
Python 3.10.6 (main, Nov  2 2022, 18:53:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
...
....
>>> exit()
repl@host:/#
Введение в Docker

Выполнение команды оболочки при запуске

CMD <shell-command>

Инструкция CMD:

  • Выполняется при запуске образа.
  • Не увеличивает размер образа.
  • Не добавляет времени к сборке.
  • Если указано несколько, действует только последняя.
Введение в Docker

Типичное использование

Запуск приложения для выполнения рабочего процесса или приёма внешних подключений.

CMD python3 my_pipeline.py
CMD postgres

Запуск скрипта, который, в свою очередь, запускает несколько приложений

CMD start.sh
CMD python3 start_pipeline.py
Введение в Docker

Когда контейнер останавливается?

$$

  • Образ hello-world -> После вывода текста
  • Образ базы данных -> При завершении работы базы данных

$$

Универсальный образ требует более общей стартовой команды.

  • Образ Ubuntu -> При закрытии оболочки
Введение в Docker

Переопределение стартовой команды по умолчанию

Запуск образа

docker run <image>

Запуск образа с пользовательской стартовой командой

docker run <image> <shell-command>

Интерактивный запуск образа с пользовательской стартовой командой

docker run -it <image> <shell-command>
docker run -it ubuntu bash
Введение в Docker

Итоги

Назначение Инструкция Dockerfile
Добавить команду оболочки, выполняемую при запуске контейнера из образа. CMD <shell-command>

Назначение Команда оболочки
Переопределить CMD, заданную в образе docker run <image> <shell-command>
Переопределить CMD в образе и запустить в интерактивном режиме docker run -it <image> <shell-command>
Введение в Docker

Давайте потренируемся!

Введение в Docker

Preparing Video For Download...