Windows Docker使用实战教程

Windows Docker使用实战教程

一、Docker安装:3步完成环境搭建

先把Docker装到电脑上,就像装QQ一样简单。注意:Windows 10/11专业版/企业版需要开启Hyper-V,家庭版可以用WSL 2后端。

  1. 下载安装包 :打开Docker官网,下载Windows版Docker Desktop,双击安装包。

  2. 配置选项:安装时勾选"Use WSL 2 instead of Hyper-V"(家庭版必选),一路点击"OK",等待安装完成后重启电脑。

  3. 验证安装:重启后打开"命令提示符"(CMD)或"PowerShell",输入以下命令,如果出现版本信息,说明安装成功:

bash 复制代码
docker --version
docker-compose --version

二、核心概念:用"快递盒"理解镜像和容器

不用记复杂定义,记住这个类比:

镜像(Image):像快递盒的"模板",里面包含了运行一个程序需要的所有东西(比如操作系统、软件、配置)。比如"Nginx镜像"就是装好了Nginx服务器的模板。

容器(Container):用"镜像模板"造出来的"快递盒",是可以运行的独立实例。一个镜像可以造多个容器,就像一个蛋糕模具可以做多个蛋糕。

三、常用命令实战:从拉取到运行

用实际操作学命令,每个命令都配"做什么+代码+效果"。

1. 拉取第一个镜像:Hello World

从Docker仓库(类似应用商店)下载一个测试镜像,输入命令:

bash 复制代码
docker pull hello-world

效果:终端会显示下载进度,完成后输入docker images,能看到列表里多了"hello-world"镜像。

2. 运行第一个容器

用刚才下载的镜像启动一个容器,输入:

bash 复制代码
docker run hello-world

效果:终端会输出一段欢迎信息,说明容器成功运行!这时候输入docker ps -a,能看到刚运行过的容器(状态为Exited,因为它是测试程序,执行完就退出了)。

3. 运行一个"一直活着"的容器:Nginx

Nginx是常用的网页服务器,我们让它在容器里一直运行:

bash 复制代码
docker run -d -p 8080:80 --name my-nginx nginx

命令解释:

  • -d:后台运行容器(不会占着终端)

  • -p 8080:80:把容器的80端口映射到电脑的8080端口(访问电脑的8080端口就等于访问容器的80端口)

  • --name my-nginx:给容器起个名字叫"my-nginx",方便后续操作

效果:打开浏览器输入http://localhost:8080,能看到Nginx的默认欢迎页面!

4. 容器常用操作

操作目的 命令代码
查看正在运行的容器 docker ps
停止my-nginx容器 docker stop my-nginx
启动已停止的my-nginx docker start my-nginx
删除my-nginx容器(需先停止) docker rm my-nginx
删除nginx镜像(需先删除所有用它的容器) docker rmi nginx

四、实战进阶:用Docker Compose部署多服务

如果需要同时运行多个服务(比如Web服务+数据库),用Docker Compose更方便,只需一个配置文件。

案例:部署"Web+MySQL"服务

  1. 创建配置文件 :新建一个文件夹(比如叫"docker-demo"),在里面创建一个名为docker-compose.yml的文件,写入以下内容:
yaml 复制代码
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:  # 把电脑的文件夹映射到容器,方便修改网页内容
      - ./html:/usr/share/nginx/html
    depends_on:  # 依赖mysql服务,会先启动mysql
      - mysql

  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:  # 设置MySQL的默认密码和数据库
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: testdb
    volumes:
      - mysql-data:/var/lib/mysql  # 持久化数据,容器删除后数据不丢失

volumes:
  mysql-data:  # 定义数据卷,用于存储MySQL数据

创建网页文件 :在"docker-demo"文件夹里新建"html"子文件夹,在里面创建index.html

html 复制代码
<!DOCTYPE html>
<html>
<body>
<h1>Docker Compose 测试!</h1>
<p>连接的MySQL数据库已启动</p>
</body>
</html>

启动服务:打开CMD,进入"docker-demo"文件夹,输入命令:

bash 复制代码
docker-compose up -d

效果:Docker会自动下载Nginx和MySQL镜像,启动两个容器。访问http://localhost:8080能看到我们写的网页,用MySQL客户端连接localhost:3306,密码123456,能看到testdb数据库。

停止服务:输入以下命令停止并删除容器(数据卷会保留):

bash 复制代码
docker-compose down

五、常见问题解决

  • 问题1:启动Docker时提示"WSL 2未安装" :打开PowerShell(管理员模式),输入wsl --install,重启电脑即可。

  • 问题2:端口被占用(bind: address already in use) :把命令里的端口号改一下,比如把8080改成8081(-p 8081:80)。

  • 问题3:容器启动后看不到效果 :用docker logs 容器名查看日志,比如docker logs my-nginx,排查错误原因。

相关推荐
Sagittarius_A*39 分钟前
Docker:渗透前置容器化核心基础
运维·安全·docker·容器
名字还没想好☜3 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
2601_962364973 小时前
告别明文密码:Windows Hello 抗钓鱼双因子认证安全体系科普
windows
花和满楼4 小时前
K8s 1.36 ImageVolume GA:OCI 镜像不再只能跑容器
java·容器·kubernetes
问窗5 小时前
Rust实现Windows本地搜索工具
windows·搜索引擎·rust
Roc-xb5 小时前
你似乎已在另一个帐户上设置了 Windows Hello。请将人脸识别从其他帐户删除,然后重试。
windows·人脸识别
hj2862516 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器
HAPPY酷7 小时前
【ROS2】16G 内存笔记本跑 ROS2 仿真?VMware 虚拟机“保姆级”配置指南 (R9 7940HX + RTX 4060)
java·linux·ide·windows·pycharm
梦想的颜色14 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
夜雪一千15 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python