为出海而探索,为选择多想一步。CROSSBORDER GEEK / K8N.COM
K8N跨境极客CrossBorder Geek

教程

Docker 部署网站入门:容器、镜像与端口映射

上周帮朋友把一个网站搬到新 ,他坚持用 Docker,理由是"以后换机器一条命令就能跑起来"。今天这篇用笔记形式把 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 欢迎页就成功了。

Docker 部署流程手绘图 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

最近一周热门文章

按近 7 天访问热度排序,热度积累前优先展示新文章。

当前栏目最新文章

教程 · 继续阅读同栏目的新内容

一起交流

0 条留言

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

LEAVE A NOTE

你的经验,也很重要。

无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。

更多阅读
K8N · CrossBorder Geek

给出海玩家、独立开发者、跨境博主与外贸人的选型笔记。

关于这个博客 ↗