欢迎光临
我们一直在努力

Windows Docker 命令行使用手册

目录

  • 安装与配置

  • 基础概念

  • 镜像管理

  • 容器操作

  • 网络管理

  • 数据卷与持久化存储

  • Docker Compose

  • 常用工作流

  • 故障排查


  • 安装与配置

    1. 系统要求

    • Windows 10/11 64位(专业版/企业版/教育版)

    • 启用 Hyper-V 和 WSL 2(推荐)

    • 至少 4GB RAM

    • BIOS 中启用虚拟化

    2. 安装步骤

    # 1. 下载 Docker Desktop for Windows
    # 访问 https://www.docker.com/products/docker-desktop

    # 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 # 只显示容器ID

    # 启动/停止/重启容器
    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

    容器交互

    # 进入容器(推荐 exec)
    docker exec -it mynginx bash
    docker exec -it mynginx powershell # Windows 容器
    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

    # 端口映射(Windows 防火墙需允许)
    -p 80:80 # 主机端口:容器端口
    -p 127.0.0.1:8080:80 # 绑定到特定IP

    # 环境变量
    -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 # 主机网络(Linux 容器)
    –network=none # 无网络
    –network=container:nginx # 共享其他容器的网络


    数据卷与持久化存储

    # 创建数据卷
    docker volume create mysqldata
    docker volume ls

    # 使用数据卷
    docker run -v mysqldata:/var/lib/mysql mysql

    # 绑定挂载(Windows 路径)
    docker run -v C:\\docker\\data:/app/data nginx
    docker run -v /c/docker/data:/app/data nginx # WSL2 格式

    # 查看卷信息
    docker volume inspect mysqldata

    # 删除数据卷
    docker volume rm mysqldata
    docker volume prune # 删除未使用的卷

    # 挂载临时文件系统
    docker run –tmpfs /tmp:rw,size=64m nginx


    Docker Compose

    基本使用

    # 安装(Docker Desktop 已包含)
    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

    # 运行 Redis 缓存
    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. 应用部署

    # 1. 构建应用镜像
    docker build -t myapp:1.0 .

    # 2. 运行应用
    docker run -d `
    –name myapp `
    -p 80:80 `
    –restart unless-stopped `
    myapp:1.0

    # 3. 更新应用(蓝绿部署)
    docker build -t myapp:2.0 .
    docker run -d –name myapp-v2 -p 8080:80 myapp:2.0
    # 测试 v2 版本
    docker stop myapp && docker rm myapp
    docker rename myapp-v2 myapp

    3. 数据备份与恢复

    # 备份 MySQL 数据
    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. 多阶段构建示例

    # Dockerfile
    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

    # Compose
    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 命令行常用操作,建议结合官方文档使用:

    • Docker Windows 文档

    • Docker 命令行参考

    赞(0)
    未经允许不得转载:171主机测评 » Windows Docker 命令行使用手册
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址