跳到主要内容 Windows Docker 命令行使用手册 | 极客日志
Shell / Bash
Windows Docker 命令行使用手册 Windows Docker 命令行使用手册涵盖安装配置、基础概念、镜像管理、容器操作、网络管理、数据卷存储、Docker Compose 及故障排查。内容包含系统要求、镜像加速器配置、常用命令示例、运行参数详解、网络模式选择、持久化存储方案、Compose 文件编写、开发工作流、多阶段构建及常见问题解决。适用于 Windows 10/11 环境下的 Docker Desktop 开发与测试场景,提供 PowerShell 与 Bash 混合操作指南。
CoderByte 发布于 2026/2/21 更新于 2026/4/18 2 浏览安装与配置
1. 系统要求
Windows 10/11 64 位(专业版/企业版/教育版)
启用 Hyper-V 和 WSL 2(推荐)
至少 4GB RAM
BIOS 中启用虚拟化
2. 安装步骤
docker --version
docker-compose --version
docker info
3. 配置镜像加速器(中国用户) # 编辑 Docker 配置文件(如果不存在则创建)
notepad "$env:USERPROFILE\.docker\daemon.json"
# 添加以下内容:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
基础概念
Docker 三大核心组件
镜像(Image):只读模板,包含运行环境
容器(Container):镜像的运行实例
仓库(Registry):存储镜像的服务器(默认 Docker Hub)
Windows 特殊注意事项 # Windows 与 Linux 容器模式切换
# 右键系统托盘 Docker 图标 → Switch to Windows Containers/Linux Containers
# 路径格式差异
# Linux 路径:/app/data
# Windows 路径:C:\app\data 或 /c/app/data(在 Docker 命令中)
镜像管理
常用命令
docker search nginx
docker pull nginx:latest
docker pull microsoft/dotnet:6.0
docker images
docker image ls
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"
docker rmi nginx:latest
docker image rm image_id
docker image prune -a
docker build -t myapp:1.0 .
docker build -f Dockerfile.windows -t myapp:win .
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
docker history nginx:latest
标签操作
docker tag nginx:latest myregistry.com/nginx:v1
docker login myregistry.com
docker push myregistry.com/nginx:v1
容器操作
基本操作
docker run -d --name mynginx nginx
docker run -it --rm ubuntu bash
docker ps
docker ps -a
docker ps -q
docker start mynginx
docker stop mynginx
docker restart mynginx
docker pause mynginx
docker unpause mynginx
docker rm mynginx
docker container prune
docker logs mynginx
docker logs -f mynginx
docker logs --tail 100 mynginx
docker logs --since 1h mynginx
容器交互
docker exec -it mynginx bash
docker exec -it mynginx powershell
docker exec mynginx ls /app
docker cp mynginx:/etc/nginx/nginx.conf ./
docker cp ./config.json mynginx:/app/config.json
docker inspect mynginx
docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx
docker stats mynginx
docker top mynginx
运行参数详解
docker run -d \
--name webapp \
--hostname myapp \
-p 8080:80 \
-p 443:443 \
-v C:\data:/var/www/html \
-e APP_ENV=production \
--restart=unless-stopped \
--memory="512m" \
--cpus="1.5" \
nginx:alpine
-p 80:80
-p 127.0.0.1:8080:80
-e KEY=VALUE
--env-file .env
--memory="256m"
--memory-swap="512m"
--cpus="0.5"
--cpu-shares=512
网络管理
docker network ls
docker network inspect bridge
docker network create mynetwork
docker network create --driver=bridge --subnet=172.20.0.0/16 mynet
docker run -d --name app1 --network=mynetwork nginx
docker network connect mynetwork existing_container
docker network disconnect mynetwork container_name
docker network rm mynetwork
docker network prune
网络模式
--network=bridge
--network=host
--network=none
--network=container:nginx
数据卷与持久化存储
docker volume create mysqldata
docker volume ls
docker run -v mysqldata:/var/lib/mysql mysql
docker run -v C:\docker\data:/app/data nginx
docker run -v /c/docker/data:/app/data nginx
docker volume inspect mysqldata
docker volume rm mysqldata
docker volume prune
docker run --tmpfs /tmp:rw,size=64m nginx
Docker Compose
基本使用
docker-compose --version
docker-compose up -d
docker-compose down
docker-compose ps
docker-compose logs -f
docker-compose exec app bash
docker-compose restart
docker-compose build
docker-compose.yml 示例 version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- appnet
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: myapp
volumes:
- mysql_data:/var/lib/mysql
networks:
- appnet
volumes:
mysql_data:
networks:
appnet:
driver: bridge
常用工作流
1. 开发环境搭建
docker run -d \
--name dev-db \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=devpass \
-v mysql_dev_data:/var/lib/mysql \
mysql:8.0
docker run -d \
--name redis \
-p 6379:6379 \
redis:alpine
docker run -d \
--name registry \
-p 5000:5000 \
-v registry_data:/var/lib/registry \
registry:2
2. 应用部署
docker build -t myapp:1.0 .
docker run -d \
--name myapp \
-p 80:80 \
--restart unless-stopped \
myapp:1.0
docker build -t myapp:2.0 .
docker run -d --name myapp-v2 -p 8080:80 myapp:2.0
docker stop myapp && docker rm myapp
docker rename myapp-v2 myapp
3. 数据备份与恢复
docker exec mysql sh -c 'mysqldump -uroot -p$MYSQL_ROOT_PASSWORD --all-databases' > backup.sql
docker run --rm \
-v mysql_data:/volume \
-v C:\backups:/backup \
alpine tar cvf /backup/mysql_data.tar /volume
docker exec -i mysql sh -c 'mysql -uroot -p$MYSQL_ROOT_PASSWORD' < backup.sql
4. 多阶段构建示例 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]
docker build -t myapp:prod .
故障排查
常见问题解决 # 1. Docker 服务未启动
# 检查服务状态
Get-Service docker*
# 重启服务
Restart-Service docker
# 2. 端口冲突
netstat -ano | findstr :8080
# 停止占用进程或修改映射端口
# 3. 磁盘空间不足
docker system df # 查看磁盘使用
docker system prune -a # 清理所有未使用的对象
# 4. 容器启动失败
docker logs container_id # 查看日志
docker inspect container_id # 检查配置
# 5. 镜像拉取失败
# 检查网络连接
# 更换镜像源
# 登录 Docker Hub
# 6. Windows 路径问题
# 使用绝对路径:C:\data 或 /c/data
# 确保目录存在且权限正确
调试命令
docker events
docker exec -it container_name ping db
docker exec -it container_name curl http://localhost
docker stats
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
docker info
docker version
日志收集 # 导出所有日志
Get-EventLog -LogName Application -Source Docker | Select-Object TimeGenerated, EntryType, Message | Export-Csv -Path docker_logs.csv
# 过滤错误日志
docker logs container_id 2>&1 | Select-String -Pattern "error|fail" -CaseSensitive
附录:常用命令速查表
docker version
docker info
docker system df
docker system prune
docker images
docker pull
docker build
docker push
docker rmi
docker run
docker ps
docker start/stop/restart
docker exec
docker logs
docker rm
docker network ls
docker network create
docker network connect
docker volume create
docker volume ls
docker-compose up
docker-compose down
docker-compose logs
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
注意事项
权限问题:Windows 下 Docker 需要管理员权限运行某些操作
路径差异:Windows 与 Linux 路径格式不同,注意转换
防火墙:确保 Windows 防火墙允许 Docker 相关端口
数据持久化:重要数据务必使用卷或绑定挂载
资源限制:适当限制容器资源使用,避免影响宿主机
安全更新:定期更新 Docker 和镜像版本
生产环境:Windows Docker 主要用于开发测试,生产建议使用 Linux
本手册涵盖 Windows Docker 命令行常用操作,建议结合官方文档使用:
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online