uz
KA
июня 23, 2025
Обновлено июня 23, 2025

Как запустить и использовать Docker Python?

Linux Nginx

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

Сегодня на примере технологии виртуализации и платформы для построения подобной виртуальной среды Docker – установим и развернем образ контейнера Python.

Развертывание контейнера Docker

Базово нам необходима сама платформа, для этого обновите индексы пакетов и установите Docker, в случае, если он уже предустановлен – пропустите шаг. Для deb-подобных систем будем использовать автоматизированный скрипт развертывания:

sudo apt purge -y docker.io docker-compose docker-doc podman-docker \

curl -fsSL https://get.docker.com -o get-docker.sh \

sudo bash get-docker.sh

Установка
Скриншот № 1 — Установка

После по всем канонам и мерам предосторожности нам необходимо создать пользователя от чьего лица будет запускаться контейнер, с пониженными привилегиями. Чтобы в случае побега нарушителя из него с помощью запуска вредоносных команд мы могли увеличить TTA или Time-To-Attack. Для этого используем команды:

sudo adduser python && sudo usermod -aG docker python
New User
Скриншот № 2 — Новый пользователь

Так как обращаться к Docker-сокету может только root или пользователи группы docker, то нам необходимо добавить python пользователя к ней. После чего мы сможем запустить базовый контейнер с окружением Python на борту.

Обратите внимание, что при запуске контейнера или же слепка файловой системы в изолированной среде будет начальная команда, которая запустит процесс. Если он завершится, то значит и контейнер, так же остановит работу, поэтому необходим цикл!

Для этого создадим цикл в интерпретаторе bash и зайдем внутрь контейнера, чтобы просмотреть процессы:

sudo -u python docker run --name my_container -v data-storage:/home -d python /bin/bash -c ‘while true;do sleep 1000;done’ && sudo docker ps
Запуск контейнера
Скриншот № 3 — Запуск контейнера

Где каждая из представленных опций и аргументов выполняет свою функцию в запуске контейнера:

  • sudo -u python docker run – запускает контейнер с правами обычного пользователя;
  • –name my_container – задает имя контейнера my_container;
  • -v data-storage:/home – монтирует том data-storage в /home внутри контейнера;
  • -d – запускает контейнер в фоновом режиме (detached mode);
  • python – использует образ python для создания контейнера;
  • /bin/bash -c ‘while true; do sleep 1000; done’ – выполняет бесконечный цикл внутри контейнера:
  • /bin/bash -c – запускает команду через Bash;
  • sudo docker ps – после успешного запуска контейнера выводит список работающих контейнеров.

Для входа в контейнер будем использовать команду вида:

docker exec <container-id> /bin/bash
Запуск команды в оболочке
Скриншот № 4 — Запуск команды в оболочке

После чего обновим пакеты на машине и установим менеджер процессов, где просмотрим структуру нашего запущенного PID пространства:

Процессы
Скриншот № 5 — Процессы

Внутри мы видим совокупность нашего авто-запущенного процесса и текущей сессии. Обычно для работы контейнеров, где нет готового сервиса необходимо подготовить соответствующие ресурсы. При создании облачного сервера от Serverspace, у каждого из стандартных репозиториев задан ключ. Для выполнения тестов, вы можете использовать изолированную среду VPS сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.

Создание сервера
Скриншот №6 — Создание сервера

Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов.

Разворачиваем сервис в Docker контейнере

К примеру, возьмем вполне рабочий кейс, где нам в таком контейнере необходимо развернуть сервис веб-приложения. Для этого мы должны взять базовый образ, пусть это останется минимальный набор окружения Python, который необходимо модифицировать. Не зря он считается минимальным, некоторые библиотеки нужно будет докачать в процессе.

Решить это можно двумя путями: в первом случае мы прописываем команду автозапуска для начала работы и кладем приложение в хранилище, которое подключим или пересобираем образ. Конечно, более корректным способом реализации является второй, там не хранится длинная строка автозагрузки и контейнер запускается сразу с вашими файлами.

Воспользуемся первым и сохраним, не выходя из предыдущей сессии файл в папку, которую присоединили к виртуальному хранилищу:

nano /home/app.py
Приложение
Скриншот № 7 — Приложение

После этого, выйдем из него, остановим и удалим:

sudo docker stop $(sudo docker container ls -q -a) && sudo docker remove $(sudo docker container ls -q -a)

Пропишем автозапуск с обновлением индексов пакетом, установкой менеджера пакетов Python, а так же запуском приложения:

sudo -u python docker run --name my_container -d -v data-storage:/home -it python /usr/bin/bash -c ‘apt update && apt install python3-pip -y && python3 -m pip install flask && python3 /home/app.py’
Запуск контейнера с приложением
Скриншот № 8 — Запуск контейнера с приложением

Спустя некоторое время его развертывания необходимо проверить, запустился ли он. Просмотрим его логи командой:

sudo docker logs <container-id>
Сервис
Скриншот № 9 — Сервис

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

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
100029 Ташкент Улица Якка Чинар, дом 2/1
ООО «ИТГЛОБАЛКОМ ЛАБС»

Вам также может быть интересно...