教程
Docker 部署网站入门:容器、镜像与端口映射
上周帮朋友把一个网站搬到新 VPS,他坚持用 Docker,理由是"以后换机器一条命令就能跑起来"。今天这篇用笔记形式把 Docker 部署网站的完整流程写下来:容器、镜像、端口映射、数据持久化,最后附常见坑清单。
AI 操作示意图·以官网实际界面为准
1. 先搞清楚三个概念
- 镜像(Image):一个打包好的运行环境模板,比如 nginx 镜像、node 镜像,只读,不运行。
- 容器(Container):镜像跑起来的实例,你可以理解成一台"虚拟小电脑",可增删可销毁。
- 端口映射(Port Mapping):把容器内部的端口暴露到宿主机上,网站才能被外界访问。
一句话记忆:镜像 = 菜谱,容器 = 按菜谱炒出来的那盘菜。
2. 安装 Docker 后先做两件事
# 验证安装
docker --version
# 下载一个测试镜像并跑起来(跑完即删)
docker run --rm hello-world
能输出 Hello 信息就说明环境 OK。--rm 的意思是容器退出后自动删除,测试用很顺手。
3. 用一条命令跑起 Nginx
docker run -d --name my-web -p 8080:80 nginx
拆开看:
| 参数 | 含义 |
|---|---|
-d |
后台运行(detached) |
--name my-web |
给容器起名,方便管理 |
-p 8080:80 |
宿主机 8080 端口 → 容器 80 端口 |
nginx |
使用的镜像名 |
跑起来后浏览器访问 http://你的服务器IP:8080,看到 Nginx 欢迎页就成功了。
AI 操作示意图·以官网实际界面为准
4. 端口映射:宿主机 : 容器
-p 8080:80 左边的 8080 是宿主机端口(外部访问用这个),右边 80 是容器内部端口(程序监听这个)。两个常见误区:
- 改了容器内端口但没改映射,外面永远访问不到;
- 多个容器不能同时映射同一个宿主机端口,会报"port is already allocated"。
5. 数据挂载:容器删了数据别丢
容器删掉后,里面的文件默认一起没了。把宿主机的目录挂进容器:
docker run -d --name my-web -p 8080:80 \
-v /var/www:/usr/share/nginx/html nginx
-v /var/www:/usr/share/nginx/html 意思是:宿主机的 /var/www 目录 = 容器内的网页目录。以后改网站文件直接改宿主机的 /var/www,容器删了重建数据还在。
6. 多服务用 docker-compose
网站通常不止一个容器(比如 Nginx + 后端 + 数据库)。写一个 docker-compose.yml:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./www:/usr/share/nginx/html
然后:
docker compose up -d
docker compose ps # 查看状态
docker compose logs -f # 看日志
一个文件管一套服务,换机器直接把这个目录拷过去,up -d 就回来了。
7. 常见坑清单
- 端口被占用:
docker ps -a看有哪些容器,或者netstat -tlnp | grep 8080找占用进程; - 镜像拉取慢:配置镜像加速器,或换国内可用的 registry mirror;
- 容器重启后数据丢失:没挂载 volume,镜像重建后一切归零;
- 时区不对:容器默认 UTC,日志时间差 8 小时很正常,启动时加
-e TZ=Asia/Shanghai; - 改配置不生效:改了代码/配置记得
docker restart <容器名>,部分场景需要重建容器。

小结
Docker 部署网站的核心就四步:拉镜像 → 跑容器 → 映射端口 → 挂载数据。先在小机器上把 hello-world 跑通,再上真实站点;多服务再引入 compose,一个文件管到底。命令以 Docker 官方文档为准,遇到报错先看日志,别急着删容器重建。
官方资料
资料核对日期:2026-10-24
- Docker 官方文档(安装、Get Started、CLI 参考):https://docs.docker.com/
- nginx 官网(Nginx 特性与文档):https://nginx.org/en/
- Let's Encrypt(免费 TLS 证书,网站上线后可配合启用 HTTPS):https://letsencrypt.org/
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。