← Назад к вопросам

Можно ли запустить Docker на Windows?

2.0 Middle🔥 151 комментариев
#Другое

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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)
Можно ли запустить Docker на Windows? | PrepBro