Docker 入门实战:从零部署第一个容器应用

很多人学 Docker 卡在第一步:概念看了不少,镜像、容器、仓库这些词都认识,可真要部署一个能打开的网站,还是不知道从哪里下手。本文不讲大道理,只带你做一个完整小项目:从安装 Docker 开始,到把一个自己的网页装进容器并在浏览器里打开。跟着做一遍,Docker 的基本用法就立起来了。

Docker 入门实战:从零部署第一个容器应用

命令与系统要求按 Docker 官方文档核实,核实日期为 2026-11-09;凡是写了“未核实”的地方,都是没有验证过的说法,不要把它当成事实。不同系统与不同版本的安装细节可能有差异,动手之前先以官方文档为准。

项目目标:一个能打开的网页

这个项目的终点很具体:在浏览器里打开一个地址,能看到你自己写的一页网页,而这页网页不是直接放在电脑上运行的,是跑在一个容器里的。项目分五步:装好 Docker、跑通测试容器、准备网页文件、写镜像配方并构建、启动容器并打开验证。每一步都有可以检查的结果,做完一步再往下走。

先弄清三个词再动手。镜像是一份做好的应用配方加文件,像一张安装光盘;容器是镜像跑起来的实例,像光盘装好后正在运行的程序;仓库是存放镜像的地方,别人做好的镜像可以从仓库拉下来直接用。这三个词分清了,后面的命令就不会晕。

这个项目不需要你会写后端代码。网页只是一页静态页面,容器里跑的是现成的网页服务器,你要做的只是把自己的页面放进去。等这套流程跑通了,再换成自己的项目也不难。

第一步:安装 Docker,先确认电脑能不能装

去 Docker 官网下载安装包。桌面系统一般装 Docker Desktop,服务器系统一般装 Docker Engine,两者是不同的安装方式,不要混着用。安装包只从 Docker 官网下载,不要从不明来源下载安装程序。

系统要求以官方文档为准。按 Docker 官方文档的说法,桌面版需要 64 位操作系统、开启硬件虚拟化、并留出足够的内存,具体到哪个系统版本、需要多少内存、要不要先装额外组件,不同版本的要求可能不同,本文不写死版本号,安装前请对照官方文档逐项核对,核实日期为 2026-11-09。虚拟化开关一般在主板设置里开启,具体位置因主板而异,未核实某一款主板的设置路径。

安装完成后先验证,不要急着往下做。打开终端,依次运行下面两条命令:

1docker --version
2docker run hello-world

第一条显示版本号,说明命令行工具已经装好;第二条会拉取一个很小的测试镜像并运行,看到欢迎信息就说明 Docker 已经能正常工作。如果第二条报错,先看报错信息里提到的服务有没有启动,桌面版一般要等托盘图标稳定下来再试。

收费问题先讲清楚。Docker Desktop 的个人使用与收费规则以 Docker 官网的订阅说明为准,本文未核实具体价格与免费范围。公司电脑上安装之前,先确认所在单位的合规要求,不要默认个人免费就等于公司也能免费使用。

第二步:跑通第一个容器,摸清常用命令

测试容器跑通之后,再用三条命令摸清容器的基本操作。先看本机有哪些镜像,再看正在运行的容器:

1docker images
2docker ps
3docker ps -a

第一条列出已经下载到本机的镜像,第二条只列正在运行的容器,第三条连已经停掉的容器也列出来。刚装好时镜像列表里只有测试镜像,容器列表可能是空的,这是正常的。

容器停了不等于镜像没了。容器停止后,镜像还在本机,下次再启动同一个镜像会重新建一个容器。想删掉停掉的容器与不用的镜像,可以用下面两条命令,但要先确认里面没有重要数据:

1docker rm 容器名或容器编号
2docker rmi 镜像名或镜像编号

容器编号不用输全,前几位能区分开就行。数据卷里的数据与容器是分开存放的,删容器之前先想清楚数据放在哪里,误删数据卷可能导致数据丢失,重要数据先备份再动手。

第三步:准备项目文件,一个网页加一份配方

先在电脑上新建一个项目文件夹,比如叫 my-first-site,在里面放两个文件。第一个是网页文件 index.html,内容可以很简单:

 1<!DOCTYPE html>
 2<html lang="zh-CN">
 3<head>
 4  <meta charset="utf-8">
 5  <title>我的第一个容器应用</title>
 6</head>
 7<body>
 8  <h1>你好,容器里的世界</h1>
 9  <p>这一页正跑在一个 Docker 容器里。</p>
10</body>
11</html>

第二个是镜像配方 Dockerfile,告诉 Docker 用什么基础镜像、把文件拷到哪里、启动时运行什么:

1FROM nginx:alpine
2COPY index.html /usr/share/nginx/html/index.html
3EXPOSE 80

这三行分别对应三个动作:以一个轻量网页服务器镜像为起点,把你的页面拷进服务器默认的网页目录,并声明容器对外提供网页服务。基础镜像的标签与版本会随时间变化,本文示例用的是写作时常见的一种写法,具体标签是否存在、对应哪个版本,未核实,请以 Docker Hub 上的镜像页面为准。项目文件的版本管理可以用 Git,做法可以参考本站的Git 快速入门,先把项目文件管起来再构建。

写配方之前先想清楚数据放哪里。这个项目是静态网页,没有要保存的数据,所以不需要数据卷。如果你的应用要存数据库或用户上传的文件,就要另外规划数据卷,把数据存在容器外面,否则删容器时数据会一起消失。数据卷的用法本文只讲思路,具体挂载语法请对照官方文档核实。

第四步:构建镜像并启动容器

回到项目文件夹,在终端里构建镜像,给它起个名字:

1docker build -t my-first-site .

命令最后的点号表示在当前文件夹找配方文件,不要漏掉。构建成功后,用下面这条命令启动容器,把容器的网页端口映射到本机的端口:

1docker run -d -p 8080:80 --name my-site my-first-site

这里的 8080 是本机的端口,80 是容器里的端口,名字 my-site 是给容器起的名字,方便之后管理。启动后在浏览器打开本机 8080 端口,就能看到你自己的页面。如果页面打不开,先用 docker ps 看容器是不是在运行,再用 docker logs my-site 看容器输出了什么。端口被占用、配方写错、文件路径不对,是新手最常见的三类问题,逐项排查比反复重装管用。

端口与名字冲突时不要硬来。如果 8080 已经被别的程序占用,换一个空闲端口再启动,比如改成 8081。如果容器名字已经存在,先删掉旧的同名容器再启动,不要同时留着两个同名容器。

第五步:改页面、更新容器、收尾清理

改页面要重新构建再启动。改了 index.html 之后,容器里的文件不会自动跟着变,需要重新构建镜像,再停掉旧容器、删掉旧容器、用新镜像重新启动:

1docker stop my-site
2docker rm my-site
3docker build -t my-first-site .
4docker run -d -p 8080:80 --name my-site my-first-site

这套“改、构建、停、删、起”的循环,就是容器部署最基本的工作流。熟练之后可以再学用 Compose 文件把构建与启动写成一份配置,一条命令完成整套操作,Compose 的具体语法请以官方文档为准,本文未展开核实。

项目做完记得清理。实验用的容器与镜像不用长期留在本机,确认页面已经验证通过后,可以停掉容器、删掉容器与镜像,给磁盘腾出空间。清理之前确认容器里没有要保留的数据,数据卷尤其要单独检查,不要跟着容器一起误删。

下一步可以往哪里走。跑通这个项目之后,可以试着把容器里的服务换成自己的应用,比如用容器跑一个本地 AI 助手,本站的用 Ollama 搭建本地 AI 助手就是一个现成的容器应用例子。也可以学着把镜像推到仓库,再到另一台电脑上拉下来运行,到了那一步,部署就不再依赖某一台电脑了。生产环境部署还涉及域名、证书、备份与更新策略,本文只覆盖入门的第一步,生产用法未核实,请另外查阅官方的最佳实践文档。