Docker 安装与第一行命令把你的电脑变成“万能集装箱码头”简单说Docker 就是一套“标准化打包工具”让你把任何软件连同它的运行环境一起打包带走到任何电脑上都能直接运行就像把整个厨房装进一个行李箱到哪都能立刻做饭。为什么会有 Docker——一个“软件搬家”的悲惨故事想象一下这个场景你花了三天三夜终于在自己的电脑上搭建好了一个复杂的网站。数据库、缓存、前端框架、后端服务……所有东西都配置得妥妥当当。然后老板说“把这个网站部署到服务器上吧。”你兴冲冲地把代码拷过去一运行——报错。服务器上没有 Python 3.9只有 3.6。数据库版本不对。环境变量没设置。依赖包缺了十几个。你开始疯狂百度装这个配那个折腾两天服务器终于能跑了。但三个月后服务器要迁移你又得重来一遍……这就是 Docker 诞生前的“软件搬运噩梦”。每个软件都像一套精密仪器需要特定的“房间”操作系统、版本、依赖才能工作。而 Docker 的发明者想为什么不能把软件和它的“房间”一起打包就像搬家时把整个房间连同家具一起搬走而不是只搬家具过去再重新组装。于是 Docker 诞生了——它创造了一种叫“容器”Container的轻量级虚拟房间。每个容器里装着软件 它需要的一切到任何电脑上都能直接运行。第一步安装 Docker——给电脑装个“集装箱管理系统”安装 Docker 就像给电脑装一个“集装箱调度中心”。你不需要理解它的底层原理就像你不需要知道起重机怎么造也能用集装箱运货。Windows 用户最省心版打开浏览器搜索“Docker Desktop for Windows”下载安装包大约 500MB像下载一个大型游戏双击安装一路“下一步”安装完成后电脑会提示重启。重启后桌面上会出现一个鲸鱼图标Docker 的 logo注意Windows 用户需要确保电脑开启了“硬件虚拟化”大部分新电脑默认开启。如果安装后提示“WSL 2 未安装”按提示安装一个 Linux 子系统就行——就像给 Windows 装一个“翻译官”让 Docker 能和系统顺畅沟通。Mac 用户更简单打开浏览器搜索“Docker Desktop for Mac”下载安装包Intel 芯片和 Apple 芯片版本不同注意选择把安装包拖进“应用程序”文件夹打开 Docker输入密码授权Linux 用户最灵活但步骤稍多打开终端相当于电脑的命令行输入以下命令就像给电脑下指令# 更新软件包列表相当于刷新购物清单 sudo apt update # 安装 Docker相当于下单购买 sudo apt install docker.io # 启动 Docker 并设置开机自启 sudo systemctl start docker sudo systemctl enable docker安装完成后打开终端输入docker --version如果看到类似Docker version 24.0.7的输出就说明安装成功了。第一行命令Hello World——让 Docker 说句话安装完成后我们来执行 Docker 的“第一声啼哭”——运行一个最简单的容器。打开终端Windows 用户打开命令提示符或 PowerShell输入docker run hello-world按下回车你会看到类似这样的输出Hello from Docker! This message shows that your installation appears to be working correctly. ...发生了什么这就像你第一次使用外卖 App——你点了一个“Hello World”套餐docker run hello-worldDocker 发现本地没有这个套餐就自动从“云端仓库”Docker Hub下载了一份然后在一个隔离的“小厨房”容器里运行它最后端出一盘“Hello World”的消息给你看。理解核心概念三个生活类比1. 镜像Image——像“菜谱”镜像就是容器的“菜谱”。菜谱上写着需要什么食材依赖、怎么切菜配置、用什么锅运行环境。你拿着菜谱随时可以做出同样的菜启动容器。镜像本身是只读的不能修改——就像你不能在菜谱上直接改菜的味道只能按菜谱做。2. 容器Container——像“做好的菜”容器是镜像的“运行实例”。你按照菜谱镜像做了一道菜容器这道菜可以端上桌提供服务。你可以同时做多道同样的菜多个容器每道菜互不影响。容器可以被启动、停止、删除就像菜可以吃、可以放冰箱、可以倒掉。3. 仓库Registry——像“菜谱图书馆”Docker Hub 就是最大的“菜谱图书馆”里面有几百万份菜谱镜像。你可以从图书馆借菜谱下载镜像也可以把自己写的菜谱上传发布镜像。docker run hello-world就是从图书馆借了一份叫“hello-world”的菜谱。第二个命令运行一个真正的网站光看 Hello World 不过瘾我们来运行一个真正的网站。输入docker run -d -p 8080:80 nginx拆解这个命令就像拆解一个魔法咒语docker run启动一个容器点菜-d后台运行让厨房自己忙活别占用你的终端-p 8080:80端口映射把电脑的 8080 端口“接一根水管”到容器的 80 端口nginx使用 nginx 镜像一个流行的网页服务器软件命令执行后打开浏览器访问http://localhost:8080你会看到一个“Welcome to nginx!” 的页面。发生了什么你从菜谱图书馆借了 nginx 的菜谱镜像做了一道菜容器然后把这道菜的“上菜窗口”端口映射到了你电脑的 8080 号窗口。现在任何人访问你的电脑的 8080 端口就能看到 nginx 提供的网页。管理你的容器三个救命命令1. 查看运行中的容器docker ps就像查看厨房里正在做的菜哪道菜在煮容器 ID、用的什么菜谱镜像、运行了多久创建时间。2. 停止容器docker stop [容器ID或名称]比如docker stop nginx或docker stop 3a4b5c6d用docker ps看到的 ID 前几位。就像关掉炉火让菜停止烹饪。3. 删除容器docker rm [容器ID或名称]就像把做好的菜倒掉清理厨房。注意删除前必须先停止容器。一个完整的“从零到网站”流程让我们把刚才学的串起来模拟一个真实场景你想在本地测试一个网站然后把它部署到服务器。拉取镜像从图书馆借菜谱docker pull nginx启动容器按菜谱做菜并开放端口docker run -d -p 8080:80 --name my-website nginx这里--name my-website给容器起了个名字方便管理。验证浏览器访问http://localhost:8080看到欢迎页面。停止并删除测试完毕清理环境docker stop my-website docker rm my-website关键点整个过程你不需要安装 nginx不需要配置环境变量不需要处理依赖冲突。Docker 帮你把 nginx 连同它需要的 Linux 环境、配置文件、依赖库全部打包在一个容器里。你在自己电脑上测试通过后把同样的命令在服务器上跑一遍结果完全一致。常见问题新手最纠结的 3 个点Q1Docker 和虚拟机有什么区别生活类比虚拟机就像租一整套房子包括地基、墙壁、水电而 Docker 就像租一个集装箱只有你需要的那部分空间。虚拟机启动要几分钟Docker 启动只要几秒。虚拟机占用几个 GBDocker 镜像通常只有几百 MB。Q2为什么我运行docker run后终端卡住了因为你忘了加-d参数。没有-d容器在前台运行占用你的终端。按CtrlC可以退出但容器也会停止。加上-d让它在后台运行。Q3端口冲突怎么办如果你运行docker run -p 8080:80 nginx时报错“port is already allocated”说明 8080 端口已经被别的程序占用了。换个端口比如-p 8081:80然后访问localhost:8081。下一步你已经会了 80% 的 Docker别惊讶Docker 的核心操作就这么几个命令。你学会了安装 Docker运行容器docker run查看容器docker ps停止/删除容器docker stop/docker rm理解镜像、容器、仓库的概念这已经足够你开始使用 Docker 了。就像学开车你不需要先学会发动机原理才能上路。先会启动、挂挡、刹车剩下的网络配置、数据持久化、多容器协作都是在实践中慢慢掌握的。现在打开终端运行docker run -d -p 8080:80 nginx然后打开浏览器看看——你已经用 Docker 运行了第一个真正的服务。这个服务可以跑在任何有 Docker 的电脑上完全一致毫无差异。这就是 Docker 的魔力。