给片哥的Docker教程
视频通过通俗易懂的类比,详细演示了在Windows 11环境下基于WSL 2安装和配置Docker容器的全过程。
UP主: HDAlex_John · 时长: 30:51 · 🔗 B站原视频
发布: 2025-01-11 · 收录: 2025-01-29
标签: Docker · WSL2 · 容器化 · Windows教程 · 开发环境
开场:今天在 Windows 11 上搞 Docker
嗨,这里是 ALEX。
今天我就通过我这台 Windows 11,来带大家尝试使用 Docker。在开始之前,我先带大家走一下“下片”的流程,我们用最古早的通过种子下片的方式来演示一下。
用“种子下片”类比:先拿到种子,再下到片
这里我们搜索一下《鱿鱼游戏》,找一下有没有种子文件。这里有一个 BT 种子,打开它,双击运行。
然后选择我们要下载的集数就可以了,这里我选择第一集下载。存在相同任务,跳过继续。之前我有个下载记录,删掉再来。再次双击,等待它解析这个种子文件,然后选择我要下载的第一集,立即下载。
连接成功,这样它就开始下载了。我们稍微等一下,等它下载完成。下载完成应该就能直接播放了。
OK,下载完成,我们来打开文件夹,播放。我看看,没什么问题。
OK,我们来总结一下流程:先从某些神奇网站得到一个种子文件,然后启动迅雷,它下载速度能够正常跑,最后保证这个种子没有被塞奇奇怪怪的东西,是正常的片源,我们就能够下到片了。
那这个流程有什么用呢?我们待会使用 Docker 的时候,就要用到这样的流程。
为什么 Windows 装 Docker 麻烦,教程看哪
接下来我就带各位在 Windows 上面去安装 Docker。
为什么不是 Mac 呢?如果你使用的是 Mac,恭喜你,你不用像我这样为了在 Windows 上安装 Docker 而操心,因为你直接双击安装就可以了。
如果是 Windows,就需要解决各种各样的问题,你才能够使用 Docker。Windows 上使用 Docker 的相关配置教程,其实并不在 Docker 官网,而在 Microsoft(微软)的文档里。所以我这里打开了一个微软的文档链接,它教我们如何在 WSL 2 上面使用 Docker。
WSL 是什么,怎么确认有没有装
WSL 是 Windows 系统的一个拓展功能,它不是装好的,是可选的,需要手动打开它才能安装。
你如果不知道自己有没有安装,很简单:打开 CMD,在这里输入:
wsl -v
可以看到它提示未安装适用于 Linux 的 Windows 子系统,可以通过命令来安装。我们直接输入:
wsl --install
会提示是否允许更改,点“是”,它就开始安装了。只要版本是 2 开头,就是正常的。
下载速度比较玄学,很可能需要开代理。我为了视频时长开一下代理,不然下载会很慢。开了代理之后,关掉终端,重新运行安装命令,速度就快多了。等待它安装完成。
成功安装完成之后,它可能会自动再安装一个 Linux 系统,默认是 Ubuntu,并让你输入用户名密码。这里可以不用管,我们重点不是用 Linux,而是用 Docker,只要安装成功就可以了。
确认 WSL 版本必须是 2
我们要确认是 WSL 2,不能是 1。怎么确认?同样打开 CMD 输入:
wsl -v
看 WSL 版本是 2 开头就没问题。
安装 Docker Desktop(图形化)
下面这一步需要安装一个叫 Docker Desktop 的软件,这是图形化的软件,有了它我们就能够不写一行命令行,直接使用 Docker。
我不推荐从文档里的按钮直接下,直接去搜索引擎搜 Docker,来到官网。官网按钮不是点一下就直接下载,需要手动选择符合系统版本和位数的版本。我们这里是 Windows 普通 PC,就选择 AMD64 下载。
我这里之前已经下载过了,找到安装包直接安装。
有一点可能劝退:Docker Desktop 语言好像改不了,默认英文。如果你知道怎么改语言,希望你能在弹幕或者评论区打出来。
安装配置只有两个选项:推荐使用 WSL 2 来代替 Hyper-V。Hyper-V 和 WSL 都是 Windows 可选功能,它俩应该是二选一。下面是添加桌面快捷方式,我不喜欢放桌面,取消掉。点击 OK 开始安装,解压文件会花点时间,耐心等。
安装完成会提示重启电脑,必须重启。
第一次启动与常见报错:虚拟化没开
重启之后,手动打开 Docker Desktop。没创建桌面快捷方式的话,就按 Windows 键,输入 docker,打开 Docker Desktop。
第一次打开需要同意条款,点 Accept。然后它会让你登录账号,Docker 也是需要登录的,但可以点 “Continue without signing in”,不登录也能用。偏好设置直接跳过。
关键看这里:如果它没有弹出错误,并且下面显示 “Engine running”,说明你已经成功在 Windows 上安装好了 Docker 和图形界面。
如果弹错误,比如提示“这台计算机不支持虚拟化”,那你需要进入主板 BIOS 开启 CPU 虚拟化。不管笔记本还是台式机,搜你的主板型号或笔记本型号,看怎么开。比如我用华硕主板,就搜“华硕 BIOS 虚拟化”,也可以加上 CPU 厂商,比如 AMD。不同主板界面不一样,需要自己找。
用 Docker Desktop 搜镜像:不挂代理就搜不到
成功安装 Docker 之后,就可以开始用了。使用之前一定要开代理,不开会发生什么?你在上面搜索框输入想安装的软件包,比如 NGINX,下面可能没结果。这不是 Docker 不能用,而是网络原因。
开了代理后重新搜索,结果就出来了。
选官方镜像:绿色官方标志
搜索结果里会有很多选项。只要是比较知名的开源项目,比如 NGINX、JDK、GCC,一定要下载带绿色 “Official Image” 标志的,这表示是官方提供的下载源。
选好之后右边两个按钮点哪个都行,我这里点 Run,让它开始下载。
镜像(image)和容器(container)的关系:继续用“种子”类比
左边我们主要用两个:Containers(容器)和 Images(镜像)。
下载成功后,在 Images 里会多一个 nginx(tag 表示版本),状态 unused 表示还没用。
镜像怎么用?就像下片:先有种子文件,再基于种子才能下到视频。Docker 里先下载镜像(images),再通过镜像构建出我们要运行的应用,这个运行出来的实例就叫容器(container)。
关系就是:先有镜像,再有容器。
运行 NGINX 容器:设置端口映射
在镜像右边点 Run,展开 Optional settings。
NGINX 什么都不用改,只需要设置端口。后面这个 80 指的是容器内部的端口,是写死的,NGINX 默认端口就是 80。前面这个端口是物理机端口。
为什么要两个端口?因为容器是虚拟的服务,物理机和容器之间通过端口映射对应起来。
这里我就不搞复杂的,内外都写 80。容器名随便写,比如 nginx-demo,点 Run。
启动后回到 Containers,就能看到 nginx-demo,状态 running。点 Ports 会跳到对应链接,刷新一下,就是标准的 NGINX 欢迎页。
用 VS Code 直接改容器里的文件(不用命令行)
接下来问题是:怎么修改容器里的内容?比如 NGINX 托管前端,需要把 HTML、JS、CSS 放到目录里。容器是虚拟的,文件能不能改?能改,但用命令行会很繁琐,要复制文件进容器。
如果用 VS Code 配合插件,会非常简单。
打开 VS Code,进 Extensions 搜索 docker,安装微软的 Docker 插件。装好后左边会出现 Docker 图标。
点进去会自动加载,能看到 Containers 和 Images,信息跟 Docker Desktop 同步。
展开正在运行的容器,会看到一个 Files 选项,展开后就能看到容器里的目录结构(熟悉 Linux 的不陌生)。这样就可以直接查看虚拟的 NGINX 服务器里面的文件。
NGINX 的网页路径我就不展开讲了,我记得是:
/usr/share/nginx/html
打开 index.html,点 Open,在右边就能看到 HTML 内容。然后我把内容删掉,输入一个基础结构,把 body 改成:
Hello Docker By alex
保存后回到网页刷新,内容就变了。也就是说,我们直接通过 VS Code 插件修改了 Docker 容器里的文件。
从下载镜像、运行容器,到用 VS Code 改文件,全程几乎没教任何 Docker 命令行(比如 docker run、docker build 这些),基本都用图形化界面 + VS Code 完成。
再来一个稍微难点的:MySQL(需要环境变量)
接下来我们试试数据库 MySQL。同样在搜索栏搜 MySQL。我不推荐用默认 tag:latest(最新版)。以我录制时(2025 年 1 月 11 日)来看,最新版可能是 9.0,我不熟,怕 bug 多,所以换成 8.0 再 Run,等它下载完成。
MySQL 比 NGINX 麻烦一点,麻烦在运行配置:需要设置环境变量,比如数据库连接密码。
点开 MySQL 的详情,在下面文档里会有 “How do you use this image”。里面会给启动示例,并且能看到 -e 参数,e 是 environment(环境变量)的意思。比如会有一个环境变量类似 MYSQL_ROOT_PASSWORD,通过它来设置 root 密码。
我们回到 Images,点 Run,展开 Optional settings:写容器名、端口。下面的 Environment variables 就是写变量的地方。变量名别手写,容易写错,复制粘贴。密码我这里写 123456,然后运行。
创建完成后看到类似 “ready for connections”,说明运行成功。
连接 MySQL:VS Code 需要另一个数据库插件
NGINX 那个容器我这里不知道为什么退出了,干脆删掉。
MySQL 不是 Web 服务,点端口链接没意义。接下来要用 VS Code 去连接 MySQL,并尝试创建库和表。
Docker 插件只能访问容器文件,并不能用图形化方式连接数据库、建表。所以需要另一个插件。
在 VS Code 里搜 MySQL,装一个数据库连接插件。我这里选了一个新一点的。安装完成后允许网络访问,左边会出现 Database 相关入口。
这个工具我也没怎么用过,我们直接创建连接:连接名随便写,比如 docker-mysql。类型选 MySQL,host、端口、用户、密码(123456)按它默认填好的来,点连接测试,连接成功后左边会多一个绿色的连接。
然后添加数据库,写 SQL:
CREATE DATABASE demo;
运行成功创建库。
再创建表,比如 student,运行创建成功。然后插入一条数据,把 name 填 ALEX,打勾提交,成功插入。
这样就通过 VS Code 插件连上了 Docker 里的 MySQL,创建了库、创建了表、插入了一条数据。
总结:Windows 装 Docker 的关键点 + 镜像文档怎么看
到这里我就通过文档和图形化工具,带各位演示了如何在 Windows 上安装配置 Docker,以及简单使用。
Windows 上比较麻烦的点主要有三个:
- 安装 WSL:参考微软文章(WSL 上的 Docker 容器入门)。我会把链接放在视频简介或评论置顶。
- BIOS 开启 CPU 虚拟化:搜“主板品牌 + CPU 品牌 + BIOS 开启虚拟化”。
- Docker Desktop 安装后确认 “Engine running”:期间可能需要多次重启。
如果你是 Mac 用户,这些都不需要,拖进去安装就行,这也是 Mac 更适合开发的原因之一。
装好之后,流程上就是:先下载镜像(类似“种子文件”),再基于镜像加配置,得到容器。不同容器启动参数不一样:比如 NGINX 只要端口;MySQL 需要设置密码环境变量。
具体要跑什么容器、怎么配,我没法替你决定,因为你要跑的服务可能完全不同。你需要自己看镜像文档。
文档在哪看?除了在 Docker Desktop 里点开,也可以去 Docker Hub:hub.docker.com。搜索镜像(比如 MySQL),选带绿色官方标志的那个,点进去,就能看到跟 Docker Desktop 里一样的 “How do you use this image” 文档。
我能做的就到这里了。以上就是本期视频的所有内容,感谢观看,我们下期视频再见。