Docker: размещение и запуск Python сценария
В этой статье мы подробно рассмотрим процесс размещения скрипта Python в контейнере Docker.
Что такое контейнер?
Контейнер представляет собой пакет всех требований к системе и программному обеспечению, которые необходимы для запуска приложения. Он состоит из исполняемых файлов времени выполнения, системных настроек, кода и библиотек.
Таким образом, с контейнерами мы можем изменять спецификации, поскольку контейнеры доступны для записи, а затем легко размещать в них приложения.
Размещение скрипта Python в Docker
Разобравшись с контейнерами, пора реализовать сценарий через контейнеры. Тем самым мы гарантируем, что контейнер позаботится обо всех требованиях и хостинге.
Перед развертыванием скрипта давайте разберемся, как размещается приложение в Docker контейнере.
- Сначала нам нужно создать Dockerfile. Dockerfile является конфигом, который необходим для создания Docker images. Он содержит все необходимые команды, которые мы обычно выполняем через командную строку для создания образа контейнера.
- Создав Dockerfile, нам теперь нужно создать образ поверх Dockerfile. Docker images можно рассматривать как шаблон, который помогает создать контейнер в докер. Он упаковывает приложения и устанавливает серверную среду, что упрощает нам использование среды для размещения приложений в контейнерах удобным способом.
- Теперь мы можем запустить изображение, чтобы увидеть вывод скрипта python. Как только образ запускается, создается контейнер со случайным именем.
Теперь приступим к реализации!! Мы будем использовать приведенный ниже сценарий Python для размещения его в контейнере докера.
lst = list()
lst = ['Python', 'Machine Learning', 'R Language', 'Bootstrap']
for x in lst:
print(x)
В приведенном выше сценарии мы создали список, а затем выполнили итерацию цикла for для печати элементов списка.
1. Создайте Dockerfile.
Dockerfile:
FROM python:3
ADD sample.py /
CMD [ "python", "./sample.py" ]
Dockerfile предлагает определенные директивы, как показано ниже -
- FROM - Эта директива устанавливает базовый образ для последующих инструкций по работе. В этом примере мы установили Python версии 3 в качестве базового изображения. Теперь Dockerfile получит этот базовый образ из Docker Hub, который на самом деле является репозиторием образов с открытым исходным кодом.
- ADD - инструкция ADD копирует новые файлы, каталоги или URL-адреса удаленных файлов из <src> и добавляет их в файловую систему изображения по пути <destination>. В нашем случае
src = sample.py
, и пункт назначения/
- CMD - эта директива запускает службы вместе с базовым настраиваемым образом.
2. Создание образа из Dockerfile
После создания Dockerfile нам нужно создать образ поверх файла Docker, используя следующую команду:
docker build -t image-name:tag .
Мы можем предоставить ему любое собственное имя изображения, и тег поможет ему отделиться от других изображений в хабе.
Пример:
docker build -t python-img:5.0 .
Результат:
[+] Building 5.4s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/python:3 5.0s
=> [internal] load build context 0.1s
=> => transferring context: 31B 0.0s
=> [1/2] FROM docker.io/library/python:3@sha256:b6a9702c4b2f9ceeff807557a63a710ad49ce737ed85c46174a059a299b580 0.0s
=> CACHED [2/2] ADD sample.py / 0.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => writing image sha256:8b2da808b361bc5112e2afa087b9eb4e305304bcc53c18925d04fe8003f92975 0.0s
=> => naming to docker.io/library/python-img:5.0
Нам нужно помнить, что образы докеров являются структурами только для чтения и могут работать независимо. С другой стороны, контейнер строится поверх образа, и ему нужно, чтобы образ запускался сам.
3. Запустите образ докера.
Давайте теперь запустим наш созданный образ, чтобы увидеть вывод скрипта python из контейнера на консоли GIT BASH.
docker run python-img:5.0
Результат:
Python
Machine learning
R language
Bootstrap
Мы также можем видеть отражение образа, запущенного в консоли Docker Community Edition, как показано ниже -
Как упоминалось в предыдущем разделе, для вызываемого изображения создается контейнер со случайным именем, как показано ниже:
Мы даже можем создавать контейнеры с настраиваемыми именами и запускать скрипт через контейнер, используя следующую команду:
docker run -it --name container-name image:tag
Пример:
docker run -it --name sample python-img:5.0
Результат:
Python
Machine learning
R language
Bootstrap
Как видно выше, мы видим два контейнера, созданные поверх того же изображения, которое мы создали ранее.