Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Docker на Windows: Полное руководство
Да, Docker полностью работает на Windows. Есть несколько способов запуска, и выбор зависит от версии Windows и требований к производительности.
Основные способы запуска Docker на Windows
1. Docker Desktop для Windows (рекомендуется)
Официальное решение от Docker, работает на Windows 10/11 Pro, Enterprise, Education.
# Установка
# Скачать Docker Desktop для Windows с docker.com
# Установить и перезагрузиться
# Проверка установки
docker --version
# Docker version 24.0.0, build 1234567
# Запуск простого контейнера
docker run hello-world
# Hello from Docker!
Что использует Docker Desktop на Windows:
- WSL 2 (Windows Subsystem for Linux 2) — на современных Windows
- Hyper-V — на старых версиях
- VirtualizationPlatform — встроенная виртуализация
# Проверить версию WSL
wsl --version
# WSL version: 2.0.0
# Проверить установленные дистрибутивы
wsl --list --verbose
# NAME STATE VERSION
# Ubuntu Running 2
# docker Running 2
2. WSL 2 + Docker (встроенный)
Модифицированный Docker Engine, установленный в WSL 2.
# На Windows: установить WSL 2
wsl --install
# В Ubuntu (WSL):
sudo apt update
sudo apt install docker.io
sudo usermod -aG docker $USER
newgrp docker
# Теперь Docker работает нативно в Linux
docker run -it ubuntu bash
3. Hyper-V (старые версии Windows)
# На Windows Server или старом Docker for Windows
# Hyper-V даёт полную виртуализацию
# Проверить, включен ли Hyper-V
Get-WindowsOptionalFeature -Online -FeatureName Hyper-V
State : Enabled
Практические примеры Docker на Windows
Пример 1: Python-приложение в контейнере
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
# На Windows (PowerShell или cmd)
docker build -t my-python-app .
docker run -p 8000:8000 my-python-app
Пример 2: FastAPI + PostgreSQL через compose
# docker-compose.yml
version: '3.8'
services:
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
api:
build: .
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql://postgres:password@db:5432/mydb
depends_on:
- db
volumes:
postgres_data:
# На Windows (PowerShell)
docker-compose up
# Оба контейнера запустятся и будут работать вместе
Пример 3: Работа с терминалом контейнера
# Запустить контейнер в интерактивном режиме
docker run -it python:3.11 bash
# Теперь вы в Linux окружении, даже на Windows
root@container:/# python --version
Python 3.11.0
root@container:/# exit
Особенности Docker на Windows
1. Пути файлов
Windows использует обратные слэши, Docker требует прямые:
# ❌ Неправильно на Windows
docker run -v C:\Users\MyFolder:\app myimage
# ✅ Правильно
docker run -v C:/Users/MyFolder:/app myimage
# Или в PowerShell
docker run -v ${PWD}:/app myimage
# Или в cmd.exe
docker run -v %cd%:/app myimage
2. Тома (Volumes)
Данные сохраняются между запусками:
# Создать том
docker volume create my-data
# Использовать том
docker run -v my-data:/data myimage
# Проверить том
docker volume ls
docker volume inspect my-data
3. Сетевые возможности
# Проброс портов
docker run -p 8000:8000 myapi
# Windows localhost:8000 → Container:8000
# Доступ с других машин в сети
# Используй IP машины Windows, не localhost
ipconfig
# IPv4 Address: 192.168.1.100
# Тогда в другом приложении: http://192.168.1.100:8000
4. Производительность
WSL 2 обычно быстрее Hyper-V:
# Проверить, какой бэкенд используется
docker info | grep "OS:"
# OS: Docker Desktop
docker info | grep "kernel version"
# Kernel Version: 5.15.90.1-microsoft-standard (WSL 2)
Проблемы и решения
Проблема 1: "Cannot connect to Docker daemon"
# Решение: Docker Desktop не запущен
# Запустить Docker Desktop из меню Windows
# Или проверить статус:
docker ps
# Если всё ещё не работает
docker context ls
docker context use default
Проблема 2: Медленная работа на Windows
# Причина: Hyper-V или WSL 2 требуют ресурсов
# Решение: выделить больше памяти
# В Docker Desktop → Settings → Resources:
# CPUs: 4
# Memory: 8 GB
# Disk: 60 GB
Проблема 3: Монтирование томов медленное
# На Windows используй :cached или :delegated
docker run -v C:/project:/app:cached myimage
# :cached — немного медленнее, но консистентнее
# Или используй именованные тома
docker run -v project-volume:/app myimage
# Быстрее монтирования папок
Docker CLI на Windows
# PowerShell (рекомендуется для Windows)
Get-Command docker
# Автодополнение работает хорошо
# cmd.exe
where docker
C:\Program Files\Docker\Docker\resources\bin\docker.exe
# Git Bash (если установлен Git for Windows)
/c/Program\ Files/Docker/Docker/resources/bin/docker.exe --version
Docker в Windows Server
# На Windows Server используется контейнеризация Windows
# Не совместимо с Linux контейнерами (обычно)
# Установка на Windows Server 2019/2022
Install-Module DockerMsftProvider -Force
Install-Package Docker -ProviderName DockerMsftProvider -Force
# Docker использует Hyper-V и Windows контейнеры
# Вместо Linux контейнеров
# Запустить Windows контейнер
docker run -it mcr.microsoft.com/windows/servercore cmd
Лучшие практики Docker на Windows
# 1. Используй slim образы для меньшего размера
FROM python:3.11-slim # ~150MB
FROM python:3.11 # ~900MB
# 2. Multi-stage build для меньшего финального образа
FROM python:3.11 AS builder
RUN pip install --user -r requirements.txt
FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
# 3. Используй .dockerignore
# __pycache__
# *.pyc
# .git
# node_modules
# 4. Профилируй контейнер
docker stats # Показывает CPU, память, сеть
docker logs my-container # Логи контейнера
docker inspect my-container # Детальная информация
Итоги
- Да, Docker полностью работает на Windows
- Docker Desktop — самый простой способ (рекомендуется)
- WSL 2 — быстрее, чем Hyper-V
- Особенности: пути с
/, проброс портов, тома - Производительность зависит от выделенных ресурсов
- Windows Server использует Windows контейнеры (не Linux)