Windows Docker使用实战教程

一、Docker安装:3步完成环境搭建
先把Docker装到电脑上,就像装QQ一样简单。注意:Windows 10/11专业版/企业版需要开启Hyper-V,家庭版可以用WSL 2后端。
-
下载安装包 :打开Docker官网,下载Windows版Docker Desktop,双击安装包。
-
配置选项:安装时勾选"Use WSL 2 instead of Hyper-V"(家庭版必选),一路点击"OK",等待安装完成后重启电脑。
-
验证安装:重启后打开"命令提示符"(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"服务
- 创建配置文件 :新建一个文件夹(比如叫"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,排查错误原因。