文章目录
本人电脑配置:
前言:
"这代码在我电脑上跑得好好的,怎么一到你那就挂了呢?" ------ 这句话是不是听着耳熟?作为一名开发者,你可能无数次被环境差异搞得焦头烂额。
Python 版本不对、Node.js 依赖冲突、数据库配置麻烦......这些问题那是非常熟悉的。
Docker 这个神器能帮你彻底解决这些烦恼!
为什么需要Docker?
你可能会想:"Docker 不是主要在 Linux 上用的吗?我在 Windows 上折腾这个干嘛?"
理由:
1. 开发环境一致性
你写代码用的是 Windows,但服务器跑的是 Linux?没问题!Docker 容器在任何系统上运行的行为都是一样的。不用担心"本地能跑,上线就崩"的尴尬。
2. 快速搭建开发环境
想用 MySQL?一条命令搞定。需要 Redis?再加一条。不用手动下载、安装、配置,省时省力。
3. 保持系统整洁
每个应用都在独立的容器里运行,不会污染你的 Windows 系统。卸载也简单,删除容器即可。
4. 团队协作标准化
新同事加入项目?给他一个 Docker 配置文件,几分钟就能把开发环境跑起来,不用再花半天配环境。
5. 学习新技术成本低
想试试 MongoDB?----> 用 Docker 跑一个,玩够了就删掉,完全不留下任何痕迹。
Docker是个啥?
想象一下:你做了个美味的蛋糕(你的应用),Docker 帮你把蛋糕连同盘子、叉子、餐巾纸(所有依赖)一起打包进一个密封盒(容器)。这个盒子在任何桌子上(任何系统)打开,都能吃到一模一样的蛋糕。
传统方式是:你告诉别人"需要烤箱、面粉、糖......",别人自己准备,结果可能做出个煎饼。而 Docker 是直接把成品打包送过去。
技术上讲,Docker 使用容器化技术,比虚拟机轻量得多,启动速度秒级,资源占用也少。
开始安装:
一、安装前准备
1、确保 CPU 能虚拟化,或者检查虚拟化是否开启,步骤如下:任务管理器 ---- 性能 ---- CPU :

2、如果没有,需要开启,操作如下:
- 重启电脑,进入 BIOS
- 找到
Virtualization Technology或SVM Mode(AMD)设置为Enabled - 保存并退出
3、使用 Hyper-V 还是 WSL?(个人使用的是 WSL),官方文档:

二、安装WSL 2
WSL(Windows Subsystem for Linux)让 Windows 能原生运行Linux 程序,WSL 2 性能更好,是 Docker 的推荐后端。
1、以 管理员身份 打开 PowerShell

2、输入以下命令:
bash
# 启用WSL功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

注意:必须重启电脑
3、验证是否安装成功:重启后,打开 PowerShell (cmd窗口也可以)执行:wsl --status 如果显示 WSL 版本信息,说明功能已启用。

三、WSL 2 配置
1、更新 WSL 内核:wsl --update
注意: 以管理员身份打开 PowerShell 或者 cmd 再执行,如果出现下面的情况:

或者 显示的进度条动都不动,非常慢,则输入:wsl --update --web-download 也就是加上:-web-download

2、设置 WSL2 为默认版本:wsl --set-default-version 2
3、安装 Ubuntu:
bash
# 1.首先输入第一个命令,如果显示进度很慢或者报错,则输入第二个
# 2.假如第二个也失败,则输入第三个
wsl --install
wsl --install -d Ubuntu-22.04
wsl --install -d Ubuntu-22.04 --web-download
# 也可以不指定版本
wsl --install --web-download
四、下载安装Docker Desktop
1、我这里是点击上面 官方文档 的下载链接:

2、双击下载的 Docker Desktop Installer.exe,安装过程中,只需等待即可,安装完成后,启动 Docker ,会让你登录,你可以选择不登录,直接进来
3、验证是否安装成功:

4、镜像安装:
4.1 cmd 运行:docker run hello-world,如果看到 "Hello from Docker!" 的欢迎信息,说明你可以正式使用 Docker 了,但。。。如果不出意外,你会看到这样的结果:

或者

错误: 找不到镜像
4.2 配置镜像:
bash
{
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://docker.1ms.run"
]
}

配置好以后,用 docker info 看一下:

这个时候再运行 docker run hello-world 就可以正常下载了:

注意: 备用镜像:
bash
{
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://mirror.gcr.io",
"https://docker.mirrors.ustc.edu.cn"
]
}
五、常用命令
1. 镜像相关命令
镜像好比容器的 "安装包":
# 搜索镜像(比如搜索MySQL)
docker search mysql
# 拉取镜像到本地(下载)
docker pull nginx
# 查看本地所有镜像
docker images
# 删除镜像
docker rmi 镜像名或ID
2. 容器相关命令
容器是镜像运行后的实例:
# 运行容器(基本格式):
docker run [选项] 镜像名
# 运行nginx容器,并映射端口
docker run --name my-web -p 8080:80 -d nginx
# --name 给容器起名
# -p 端口映射(主机端口:容器端口)
# -d 后台运行
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop 容器名或ID
# 启动已停止的容器
docker start 容器名或ID
# 重启容器
docker restart 容器名或ID
# 删除容器(必须先停止)
docker rm 容器名或ID
# 强制删除运行中的容器
docker rm -f 容器名或ID
# 查看容器日志(调试神器)
docker logs 容器名或ID
# 进入容器内部(像SSH一样)
docker exec -it 容器名或ID /bin/bash
3. 实战演练:运行一个Web服务器
运行一个 Nginx 服务器:
bash
# 1.拉取nginx镜像(如果还没拉取过)
docker pull docker.1ms.run/nginx
# 2.运行容器
docker run --name my-nginx -p 8080:80 -d docker.1ms.run/nginx
# 3. 查看容器是否运行
docker ps
# 4. 打开浏览器访问 http://localhost:8080
# 看到Nginx欢迎页,成功!
# 5. 查看容器日志
docker logs my-nginx
# 6. 进入容器内部看看
docker exec -it my-nginx /bin/bash
# 进去后可以执行 ls、cat 等命令,输入 exit 退出
# 7. 停止容器
docker stop my-nginx
# 8. 删除容器
docker rm my-nginx
4. 其它实用命令
# 查看Docker系统信息
docker info
# 查看磁盘使用情况
docker system df
# 清理未使用的镜像、容器等
docker system prune
# 一次性清理所有未使用的资源(谨慎使用)
docker system prune -a
六、常见问题
1、拉取镜像慢如蜗牛?
那就多配几个:
bash
{
"features": {
"buildkit": true
},
"registry-mirrors": [
"镜像加速地址1",
"镜像加速地址2"
]
}
如果还是不行,可以在 拉取镜像时 指定加速地址:
bash
docker pull docker.1ms.run/nginx
2、端口被占用
bash
# 查看端口占用
netstat -ano | findstr :8080
# 终止占用进程(以PID 12345为例)
taskkill /PID 12345 /F
文章结束!点个关注,学习Docker不迷路!!
