Docker provides a standardized environment to develop, test and deploy applications in an isolated container ensuring that your code works seamlessly regardless of where it’s run.
In this article, we will learn about the basics of Docker and containers, how to set Docker for Python projects, etc.
Table of Content
- Introduction to Docker and Containers
- Why Use Docker for Python Projects?
- Installing Docker
- Steps to Setting Up Docker for a Python Projects
- Docker Compose for Multi-Container Applications
Introduction to Docker and Containers
Docker is a platform designed to automate the deployment of applications inside a lightweight portable container. These containers include everything the application needs to run such as external libraries, dependencies, databases, and the application code itself. By isolating applications in containers, Docker ensures that they behave the same way across different environments from your local machine to the production server.
A container is a standard unit of software that encapsulates everything needed to run an application including code, runtime, libraries and configurations. Unlike virtual machines, containers share the host system’s OS kernel and are much lighter which makes them faster to start and more efficient in resource usage.
Why Use Docker for Python Projects?
- Consistency Across Environments: Docker ensures that your development, staging, and production environments are identical.
- Simplified Dependency Management: Docker containers include all necessary libraries and dependencies making it easier to manage Python environments and avoid version conflicts.
- Isolation: Each python project inside docker container runs in its own isolated environment that prevents conflicts between different applications or services.
- Scalability: Docker containers are lightweight and can be scaled easily.
- Portability: Docker containers can be easily shared and deployed on any system that supports Docker.
Installing Docker
Windows and macOS
Install Docker Desktop by downloading it from Docker’s official website. Follow the installation instructions and make sure Docker Desktop is running
Linux
Run the following commands to install Docker on Ubuntu/Debian-based systems:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Once installed, verify Docker is working by running:
docker --version
You can refer the below article for installation of docker:
- How To Install and Configure Docker in Ubuntu?
- Docker – Installation on Windows
Steps to Setting Up Docker for a Python Projects
Follow the below steps to Step up a docker for python project
Step 1: Create a Python Project
First, create a simple Python project locally and add Python Files: Create a simple Python script inside your project directory. For example: app.py
Python
# app.py print("Hello, from GFG!")
Step 2: Writing a Dockerfile for Python
A Dockerfile is a text file that contains instructions to build a Docker image which is a snapshot of the environment your project needs to run. For Python projects, a Dockerfile typically defines the base Python image, installs dependencies and sets up the application environment.
# Use an official Python runtime as a parent image
FROM python:3.9-slim# Set the working directory in the container
WORKDIR /usr/src/app# Copy the current directory contents into the container at /usr/src/app
COPY . .# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt# Make port 80 available to the world outside this container (Optional, only for web apps)
EXPOSE 80# Define environment variable (optional)
ENV NAME World# Run app.py when the container launches
CMD ["python", "./app.py"]
Step 3: Managing Dependencies Inside Docker (optional for our example)
Managing dependencies in Docker is simple because you define them in a requirements.txt file (for Python) and then install them during the image build process.
the following requirements.txt file can specify the dependencies needed for your Python app:
flask==2.0.1
requests==2.25.1
Step 4: Build the Docker Image
Now, build your Docker image based on the Dockerfile. Run the following command from the root of your project directory (where the Dockerfile is located):
docker build -t my-python-app .
Step 5: Deploying Python Applications with Docker
After building the image, you can run your Python app inside a Docker container. Use the following command:
docker run -it --rm --name my-running-app my-python-app
For Applications that is going to continuously run on a PORT, you have to mentions the outside port in DockerFile and use the following command when running the container:
docker run -d -p 5000:5000 --restart unless-stopped flask-app
In this command:
- docker run: This command runs a new container based on the specified image (flask-app in this case).
- —d: The -d flag runs the container in detached mode meaning the container will run in the background.
- -p 5000:5000: This option maps port 5000 of the host (your local machine) to port 5000 inside the container. Flask apps by default, run on port 5000, so this ensures that the Flask app inside the container can be accessed via localhost:5000 on your machine.
- —restart unless-stopped: This flag ensures that the container restarts automatically if it crashes or the Docker daemon restarts. The container will continue to restart unless explicitly stopped using docker stop or another similar command.
- flask-app: This is the name of the Docker image being used to run the container.
Docker Compose for Multi-Container Applications
If your Python project involves multiple services, such as a web application and a database, you can use Docker Compose to manage them in a single YAML configuration file.
Here’s an example docker-compose.yml file for a Python Flask app and PostgreSQL database:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=secret
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
To run this setup, simply execute (where your compose file is present):
docker-compose up
Conclusion
Docker is a powerful tool that provides consistency, portability and ease of deployment across different environments. By containerizing your application, you can ensure that it behaves the same way everywhere from development to production. By following this article, you can easily setup your python projects in docker environment.
Ниже представлен подробный материал о том, как работать с Docker в Python – от установки до сложных примеров. В этой статье мы разберём:
▪ Основы Docker: установка и базовые понятия
▪ Базовое использование: создание Dockerfile, сборка образов и запуск контейнеров
▪ Интеграция с Python: использование библиотеки docker-py для управления Docker из Python
▪ Продвинутые примеры: динамическое создание образов, управление контейнерами, логирование и обработка ошибок и разместим телеграм бота в docker:
Docker – это платформа для разработки, доставки и запуска приложений в изолированных контейнерах. Он позволяет упаковать приложение вместе со всеми зависимостями в единый переносимый образ. Для Python-разработчиков Docker полезен, так как:
▪ Изоляция среды: гарантирует, что ваше приложение будет работать одинаково в любых условиях
▪ Упрощённое развертывание: перенос образов между серверами и облаками становится тривиальной задачей
▪ Масштабируемость: легко интегрируется с инструментами оркестрации, такими как Kubernetes
2. Установка Docker
Перед началом работы необходимо установить Docker. Для большинства ОС доступны официальные инструкции по установке:
▪ Windows и Mac: скачайте Docker Desktop с официального сайта
▪ Linux: установите пакет docker-ce через менеджер пакетов
bashКопироватьРедактировать# Пример для Ubuntu:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
После установки проверьте, что Docker работает, запустив:
bashКопироватьРедактироватьdocker run hello-world
3. Базовое использование Docker
Создание Dockerfile
Dockerfile – это сценарий для сборки образа. Пример простого Dockerfile для Python-приложения:
DockerfileКопироватьРедактировать# Используем официальный образ Python в качестве базового
FROM python:3.9-slim
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем файлы приложения
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# Запускаем приложение
CMD ["python", "app.py"]
Соберите образ с помощью команды:
bashКопироватьРедактироватьdocker build -t my-python-app .
Запуск контейнера
Запустите контейнер:
bashКопироватьРедактироватьdocker run -d --name my_app_container -p 5000:5000 my-python-app
Параметры:
▪ -d: запуск в фоновом режиме
▪ -p: проброс портов между хостом и контейнером
4. Работа с Docker через Python
Для взаимодействия с Docker из Python используется библиотека docker-py. Установить её можно с помощью pip:
bashКопироватьРедактироватьpip install docker
Пример: Подключение к Docker и вывод информации о системе
pythonКопироватьРедактироватьimport docker
# Подключаемся к локальному демону Docker
client = docker.from_env()
# Получаем и выводим информацию о Docker
info = client.info()
print("Docker Info:")
print(info)
Пример: Список запущенных контейнеров
pythonКопироватьРедактироватьimport docker
client = docker.from_env()
print("Запущенные контейнеры:")
for container in client.containers.list():
print(f"ID: {container.id[:12]}, Имя: {container.name}, Статус: {container.status}")
Пример: Запуск контейнера и получение логов
pythonКопироватьРедактироватьimport docker
import time
client = docker.from_env()
# Запуск контейнера с командой "echo Hello, Docker!"
container = client.containers.run("ubuntu:latest", "echo Hello, Docker!", detach=True)
# Небольшая задержка для завершения выполнения команды
time.sleep(1)
# Вывод логов контейнера
logs = container.logs().decode("utf-8")
print("Логи контейнера:")
print(logs)
# Остановка и удаление контейнера (на всякий случай)
container.remove(force=True)
5. Продвинутые примеры работы с Docker в Python
5.1. Динамическая сборка образа из Dockerfile
Вы можете собрать Docker-образ прямо из Python-скрипта:
pythonКопироватьРедактироватьimport docker
client = docker.from_env()
# Сборка образа из директории, содержащей Dockerfile
try:
image, build_logs = client.images.build(path="path/to/your/app", tag="dynamic-app:latest")
print("Образ успешно собран!")
except docker.errors.BuildError as err:
print("Ошибка сборки образа:")
for line in err.build_log:
if 'stream' in line:
print(line['stream'].strip())
5.2. Запуск контейнера с параметрами окружения и монтированием томов
pythonКопироватьРедактироватьimport docker
client = docker.from_env()
try:
container = client.containers.run(
"python:3.9-slim",
command="python -c 'print(\"Работает внутри контейнера\")'",
environment={"MY_VAR": "value"},
volumes={"/host/path": {"bind": "/container/path", "mode": "rw"}},
detach=True
)
# Ожидаем завершения работы контейнера
container.wait()
print("Логи контейнера:")
print(container.logs().decode("utf-8"))
except Exception as e:
print("Ошибка при запуске контейнера:", e)
finally:
# Очистка: удаляем контейнер
container.remove(force=True)
5.3. Асинхронное управление контейнерами
Если необходимо интегрировать Docker в асинхронное приложение, можно использовать библиотеку aiohttp вместе с docker SDK. Пример асинхронного получения логов:
pythonКопироватьРедактироватьimport asyncio
import dockerasync def get_container_logs(container):
# Запускаем контейнер
container.start()
# Ожидаем некоторое время, чтобы контейнер что-то вывел
await asyncio.sleep(2)
logs = container.logs().decode("utf-8")
print("Асинхронные логи контейнера:")
print(logs)
container.remove(force=True)
async def main():
client = docker.from_env()
container = client.containers.create("ubuntu:latest", command="echo Асинхронный Docker")
await get_container_logs(container)
if __name__ == "__main__":
asyncio.run(main())
Размещение Telegram-бота в Docker: подробное руководство
В этом руководстве мы рассмотрим, как создать и запустить простого Telegram-бота с использованием Python, а затем развернуть его в Docker-контейнере. Такой подход позволяет обеспечить изоляцию среды и удобство развёртывания приложения в любых условиях.
1. Что понадобится
▪ Python 3.9+ – для разработки бота.
▪ Docker – для упаковки приложения в контейнер.
▪ Библиотека python-telegram-bot – для взаимодействия с Telegram API.
▪ Token от BotFather – получите его, создав нового бота в Telegram.
2. Создание Telegram-бота на Python
Начнём с простого кода для бота. В этом примере бот отвечает на команду /start
. Рекомендуется получать токен из переменных окружения для повышения безопасности.
Пример файла bot.py
:
pythonКопироватьРедактироватьimport os
import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
# Настройка логирования
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
# Обработчик команды /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Привет, я бот, работающий в Docker!")
if __name__ == '__main__':
# Получение токена из переменной окружения
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")
if not TOKEN:
raise Exception("Переменная окружения TELEGRAM_BOT_TOKEN не найдена!")
# Создание и запуск приложения
app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Пояснения:
▪ Код настраивает базовое логирование для отслеживания событий.
▪ Обработчик команды /start
отвечает простым сообщением.
▪ Токен бота извлекается из переменной окружения TELEGRAM_BOT_TOKEN
для безопасности.
3. Создание файла зависимостей
Создайте файл requirements.txt
и добавьте в него зависимость:
iniКопироватьРедактироватьpython-telegram-bot==20.3
Это гарантирует, что при сборке образа Docker будут установлены необходимые библиотеки.
4. Создание Dockerfile
Dockerfile описывает, как собрать образ вашего приложения. Приведённый ниже пример базируется на официальном образе Python.
Пример файла Dockerfile
:
DockerfileКопироватьРедактировать# Используем официальный образ Python
FROM python:3.9-slim
# Устанавливаем рабочую директорию в контейнере
WORKDIR /app
# Копируем файл зависимостей и устанавливаем их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Копируем исходный код в контейнер
COPY . .
# Команда для запуска бота
CMD ["python", "bot.py"]
Пояснения:
▪ FROM python:3.9-slim – задаёт базовый образ с установленным Python.
▪ WORKDIR /app – устанавливает рабочую директорию.
▪ COPY requirements.txt . и RUN pip install… – копируют файл зависимостей и устанавливают необходимые пакеты.
▪ COPY . . – копирует весь исходный код в контейнер.
▪ CMD [“python”, “bot.py”] – указывает команду для запуска приложения.
5. Сборка и запуск Docker-контейнера
После создания необходимых файлов, выполните следующие шаги:
5.1. Сборка образа
Откройте терминал в директории с проектом и выполните команду:
bashКопироватьРедактироватьdocker build -t telegram-bot .
Эта команда создаст Docker-образ с именем telegram-bot
.
5.2. Запуск контейнера
Запустите контейнер, передав токен бота через переменную окружения:
bashКопироватьРедактироватьdocker run -d --name my_telegram_bot --env TELEGRAM_BOT_TOKEN=<YOUR_TELEGRAM_BOT_TOKEN> telegram-bot
Пояснения:
▪ -d – запуск контейнера в фоновом режиме.
▪ –name my_telegram_bot – задаёт имя контейнера.
▪ –env TELEGRAM_BOT_TOKEN=<YOUR_TELEGRAM_BOT_TOKEN> – передаёт переменную окружения с токеном.
▪ telegram-bot – имя образа, созданного на предыдущем шаге.
Теперь ваш Telegram-бот запущен в Docker-контейнере и готов к работе!
Размещение Telegram-бота в Docker предоставляет ряд преимуществ:
▪ Изоляция среды: приложение работает независимо от локальных настроек системы.
▪ Портативность: легко перемещайте образ между серверами или облаками.
▪ Удобство обновлений: простой процесс сборки и развёртывания новых версий.
Попробуйте самостоятельно запустить бота, внеся необходимые доработки, и оцените удобство работы с Docker в ваших Python-проектах!
6. Заключение
В этой статье мы рассмотрели:
▪ Основы работы с Docker: от установки до сборки образов и запуска контейнеров
▪ Интеграцию Docker с Python: использование библиотеки docker-py для управления Docker-приложениями
▪ Продвинутые сценарии: динамическая сборка образов, работа с переменными окружения, монтирование томов и асинхронное управление контейнерами
Использование Docker позволяет создавать воспроизводимые среды, что особенно важно при разработке и деплое сложных приложений. Надеюсь, что представленные примеры помогут вам глубже понять возможности Docker и интегрировать его в ваши Python-проекты.
Полезные ссылки:
▪ Официальная документация Docker
▪ Документация docker-py
Продолжайте экспериментировать и оптимизировать свои рабочие процессы с помощью Docker!
Просмотры: 2 141
Docker стал неотъемлемой частью современного процесса разработки и развертывания приложений. Платформа позволяет объединить все зависимости и компоненты в единый контейнер, который можно запускать в любом окружении. Это руководство поможет вам развернуть простое Python приложение, используя Docker.
Docker — это платформа для контейнеризации, аналогичная виртуальным машинам, но значительно более легковесная. Контейнер содержит всю необходимую среду для выполнения приложения: системные библиотеки, зависимости и конфигурационные файлы.
Преимущества контейнеризации:
- Изоляция: Приложение и его зависимости изолированы друг от друга и от системы.
- Портативность: Контейнеры можно развернуть на любой машине с установленным Docker.
- Эффективность: Контейнеры используют ресурсы более эффективно по сравнению с виртуальными машинами.
Установка Docker
Поддерживаемые операционные системы
Docker поддерживается на различных платформах, включая Windows, macOS и Linux.
Пошаговая инструкция по установке Docker
Windows:
- Скачайте Docker Desktop с официального сайта.
- Установите и запустите Docker Desktop.
- Настройте параметры по умолчанию.
macOS:
- Скачайте Docker Desktop с официального сайта.
- Переместите Docker.app в папку Applications и запустите его.
- Следуйте инструкциям на экране для завершения установки.
Linux:
- В терминале выполните команду:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- Запустите и добавьте Docker в автозагрузку:
sudo systemctl start docker
sudo systemctl enable docker
Проверка установки и запуск Hello World контейнера
После установки Docker, выполните следующую команду для проверки:
Создание Python приложения
Мы будем использовать Flask для создания простого веб-приложения.
Создайте файл app.py
со следующим содержимым:
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
"""
Возвращает приветствие.
"""
return 'Hello, Docker!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Этот код создает Flask-приложение с одним маршрутом /hello
, который возвращает текст «Hello, Docker!».
Создание Dockerfile
Что такое Dockerfile?
Dockerfile — это скрипт с инструкциями для создания Docker образа. Он позволяет автоматизировать процесс создания образа и делает его воспроизводимым.
Пошаговое создание Dockerfile
Создайте файл Dockerfile
со следующим содержимым:
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Этот Dockerfile выполняет следующие шаги:
- FROM: Указывает базовый образ с Python 3.9.
- WORKDIR: Устанавливает рабочий каталог.
- COPY: Копирует
requirements.txt
в рабочий каталог. - RUN: Устанавливает зависимости из
requirements.txt
. - COPY: Копирует все файлы из текущего каталога в контейнер.
- CMD: Указывает команду для запуска приложения.
Сборка и запуск Docker контейнера
Сборка образа
Выполните следующую команду для сборки Docker образа:
docker build -t my-python-app .
Запуск контейнера
Для запуска контейнера выполните команду:
docker run -p 5000:5000 my-python-app
Эта команда пробрасывает порт 5000 контейнера на порт 5000 хоста.
Тестирование приложения
Чтобы проверить работоспособность приложения, откройте браузер и перейдите по адресу http://localhost:5000/hello
или используйте curl
:
curl http://localhost:5000/hello
Вы должны увидеть ответ Hello, Docker!
.
Устранение распространенных проблем
Ошибки при запуске контейнера
Если контейнер не запускается, используйте команду docker logs
для диагностики проблемы:
docker logs <container_id>
Повторное создание образа
Если вы изменили исходный код или зависимости, не забудьте пересобрать образ:
docker build -t my-python-app .
Заключение
В этом руководстве мы рассмотрели процесс создания Docker образа для простого Python приложения и его развертывания в контейнере. Docker позволяет легко управлять зависимостями и изолировать окружение, что делает процесс разработки и развертывания более надежным и эффективным.
This is a brief tutorial on how to run Python in a Docker container. It’s not meant to be an all inclusive dissertation on Docker but rather a let’s get you going style brief. It assumes that you are comfortable using the command-line, cmd.exe.
Docker
- Install Docker Desktop for Windows. This will probably require a reboot for installation.
- You will want to use the
servercore
Docker image. -
- To install:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
- To install:
For my setup, I have a directory named c:\temp\outside
. This will become my work area once the Docker container is running. Any files placed underneath this folder with be visible from within the container. Inside the container, this folder will be mapped to c:\inside
.
To start the container:
docker run -t -i --rm --mount type=bind,src=c:\temp\outside,dst=c:\inside -w c:\inside mcr.microsoft.com/windows/servercore:ltsc2019
Option | Explanation |
---|---|
-t | Allocate a pseudo-TTY. This is needed for an interactive shell. |
-i | Keep STDIN open even if not attached. |
–rm | Automatically remove the container when it exits. Your files will still safely reside under c:\temp\outside once you have exited the container. |
–mount | Attach a filesystem mount to the container. This has three sub parameters: type , src , and dst . |
-w | Working directory inside the container. There is where you will start off at once inside the container. |
(container) | The container name plus the version . The version comes after the : . |
Workflow
You can detach from a running container by using the CTRL-p CTRL-q
key sequence. This will place you back outside of the container.
You can then attach to get back inside the container but will first need to know the CONTAINER ID
.
To get the CONTAINER ID
, run this command:
docker container ls
Example output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bad4fb6a956 mcr.microsoft.com/windows/servercore:ltsc2019 "c:\\windows\\system32" 2 minutes ago Up 2 minutes pensive_mclaren
To attach, run this command:
docker container attach 9bad4fb6a956
You can also just use 9b
for the CONTAINER ID
. This argument just needs to be a unique id vs any other running container IDs. Notice that once you are back inside the container, your prompt will change back to c:\inside
.
TIP: When running the Python
interpreter inside the container, you can not press CTRL-Z
to exit the interpreter. If you do this, the container will become unresponsive. When this happens you will need to press CTRL-p CTRL-q
to detach from the container and then run docker container attach
to restart. The cleanest way to exit the interpreter is to issue the exit()
command.
Python
Start your container by issuing the previously mentioned docker run
command.
To install Python
and Git
you will first need to install the nuget package manager:
curl -L https://aka.ms/nugetclidl -o nuget.exe
You should now have a c:\inside\nuget.exe
binary.
Even though Python 3.9
is the current version, let’s install an older version just for fun. If you want to install the current repository version then you can exclude -Version %PYVER%
rem install an older version of Python
set PYVER=3.7.5
nuget.exe install python -ExcludeVersion -Version %PYVER% -OutputDirectory .
rem install git -- this can take a while to install
nuget.exe install GitForWindows -ExcludeVersion -OutputDirectory .
rem set the PATH environment variable so that Python and git can run
set PATH=%PATH%;c:\inside\python\tools;c:\inside\python\tools\Scripts;c:\inside\GitForWindows\tools\cmd
Pip
is not installed with this method, but you can run python -m pip
instead. For example:
python -m pip install pyinstaller
Example
This will build a stand-alone speedtest-cli Windows executable.
rem install PyInstaller as previously mentioned
rem start off in the c:\inside directory
git clone https://github.com/sivel/speedtest-cli
cd speedtest-cli
pyinstaller -F --noupx speedtest.py
rem build output excluded
cd dist
copy speedtest.exe c:\inside
dir speedtest.exe | findstr "exe"
11/22/2020 03:09 PM 5,795,380 speedtest.exe
You can now exit the Docker container by running exit
. Notice that the command prompt has changed your path location.
Run your newly created executable:
cd c:\temp\outside
speedtest.exe --version
speedtest-cli 2.1.2
Python 3.7.5 (tags/v3.7.5:5c02a39a0b, Oct 15 2019, 00:11:34) [MSC v.1916 64 bit (AMD64)]
Clean Up
This is a 3 step process:
Step 1
Stop and remove any running containers. Note that there may not be any running containers.
rem To get any containers still running
docker container ls
docker container kill CONTAINER-ID
docker container rm CONTAINER-ID
Step 2 — Optional
Remove the docker image from your system.
rem get a list of installed images
docker image ls
docker image rm mcr.microsoft.com/windows/servercore:ltsc2019
Step 3 — Optional
Remove the installed Python and git folders.
rd /s/q c:\temp\outside\python
rd /s/q c:\temp\outside\GitForWindows
rd /s/q c:\temp\outside\speedtest-cli
del c:\temp\outside\nuget.exe
This only file that should now be remaining is the speedtest.exe
file that you just created.
Comments, corrections, and suggestions are appreciated.
Thanks.