How to run python script in docker container

Docker: размещение и запуск Python сценария

В этой статье мы подробно рассмотрим процесс размещения скрипта Python в контейнере Docker.

Что такое контейнер?

Контейнер представляет собой пакет всех требований к системе и программному обеспечению, которые необходимы для запуска приложения. Он состоит из исполняемых файлов времени выполнения, системных настроек, кода и библиотек.

Таким образом, с контейнерами мы можем изменять спецификации, поскольку контейнеры доступны для записи, а затем легко размещать в них приложения.

Размещение скрипта Python в Docker

Разобравшись с контейнерами, пора реализовать сценарий через контейнеры. Тем самым мы гарантируем, что контейнер позаботится обо всех требованиях и хостинге.

Перед развертыванием скрипта давайте разберемся, как размещается приложение в Docker контейнере.

  1. Сначала нам нужно создать Dockerfile. Dockerfile является конфигом, который необходим для создания Docker images. Он содержит все необходимые команды, которые мы обычно выполняем через командную строку для создания образа контейнера.
  2. Создав Dockerfile, нам теперь нужно создать образ поверх Dockerfile. Docker images можно рассматривать как шаблон, который помогает создать контейнер в докер. Он упаковывает приложения и устанавливает серверную среду, что упрощает нам использование среды для размещения приложений в контейнерах удобным способом.
  3. Теперь мы можем запустить изображение, чтобы увидеть вывод скрипта python. Как только образ запускается, создается контейнер со случайным именем.
Читайте также:  Ссылки

Теперь приступим к реализации!! Мы будем использовать приведенный ниже сценарий Python для размещения его в контейнере докера.

lst = list() lst = ['Python', 'Machine Learning', 'R Language', 'Bootstrap'] for x in lst: print(x) 

В приведенном выше сценарии мы создали список, а затем выполнили итерацию цикла for для печати элементов списка.

1. Создайте Dockerfile.

FROM python:3 ADD sample.py / CMD [ "python", "./sample.py" ] 

Dockerfile предлагает определенные директивы, как показано ниже —

  1. FROM — Эта директива устанавливает базовый образ для последующих инструкций по работе. В этом примере мы установили Python версии 3 в качестве базового изображения. Теперь Dockerfile получит этот базовый образ из Docker Hub, который на самом деле является репозиторием образов с открытым исходным кодом.
  2. ADD — инструкция ADD копирует новые файлы, каталоги или URL-адреса удаленных файлов из и добавляет их в файловую систему изображения по пути . В нашем случае src = sample.py , и пункт назначения /
  3. 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.

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 

Индивидуальный Docker контейнер</p data-lazy-src=

How To Run Python From Docker

docker

Mount host machine path (scripts) to python project and execute scripts/test.py from container:

docker run -v /mnt/d/temp/dockertests/python3/scripts/:/scripts python-docker python /scripts/test.py

Detailed Explanations

First step is to install Docker on your platform. You can follow the steps at How To Setup WordPress on Docker WSL For Development On A Local Directory or the official guide at https://docs.docker.com/get-docker/

Create a Dockerfile

Create a folder, for example one called python, and then inside the folder create a file named Dockerfile. Inside the Dockerfile insert the following contents:

This is will instruct docker on docker build to fetch the official python image from Dockerhub and also here we are asking docker to pull the slim version which only has the common packages for python3.8.

How to build your own Python Docker Image?

You can build the image by going to the folder you where the Dockerfile above is present and running the following command:

docker build --tag python-docker .

We are telling docker to build the image in the current folder . and to give a tag: python-docker. We can now use python-docker to run python3.8. For example:

docker run -it --rm python-docker

This tells docker to the image we just created.

What does Docker run -it do?

We are telling docker to run the container in Interactive mode with -i and we are telling docker to put the output in our terminal with -t.

What does Docker –rm do?

–rm tell Docker to delete the container after running.

Running the above command should give an interactive shell of python3.8.

How to run a python script with Docker?

If you want to run a script you need to point the container to that script. This can be done either by putting the script inside the container or by mounting the location where the script is on your host machine and then pointing the container to run that script/s.

You can mount a location by providing the volume parameter -v. In the example the path I am currently at is /mnt/d/temp/dockertests/python3. Let’s say I create a test script test.py in that folder as follows:

To run the following script you can do the following:

docker run -v /mnt/d/temp/dockertests/python3/scripts/:/scripts python-docker python /scripts/test.py

What the above is doing is that it is mounting my host machine’s path /mnt/d/temp/dockertests/python3/scripts to /scripts (a new path) on the container. This gives the container access to everything that is in my host machine’s /mnt/d/temp/dockertests/python3/scripts path.

Then my container python-docker is called to execute “python /scripts/test.py” which is exactly how you would call it if you didn’t use Docker.

How To Install Python PIP Modules On Docker?

Let’s say we change our script to now import fire. If you executed it would give you something like:

ubuntu@MSI:/mnt/d/temp/dockertests/python3$ docker run -v /mnt/d/temp/dockertests/python3/scripts/:/scripts python-docker python /scripts/test.py Traceback (most recent call last): File "/scripts/test.py", line 1, in import fire ModuleNotFoundError: No module named 'fire'

You will need to add the pip install fire command to the Dockerfile to make sure the container imports it too. You can do that with:

FROM python:3.8-slim-buster RUN python -m pip install fire

Your Dockerfile now also tells Docker to install the pip module fire.

You will now need to rebuild your container using:

docker build --tag python-docker .

You should now see Docker installing the module during building:

You should now be able to run your scripts, projects and install any dependencies you want. The above works both python2 and python3 just modify your Dockerfile to get version 2!

If you would like to learn more Python check out this certificate course by Google: IT Automation with Python

Источник

Оцените статью