Docker 静态站点入门:把端口映射和文件挂载分开验证

举报
yd_238478957 发表于 2026/11/06 15:35:10 2026/11/06
【摘要】 本练习用官方 nginx 镜像托管一份本地静态页,分别验证端口映射与文件挂载。假定本机已安装 Docker,在自选的本地实验目录中操作;不需要云服务器,也不对公网开放端口。下列命令均为示例写法,按需改目录名或容器名后自行执行即可。 1. 准备静态页在新的空目录里创建站点文件。若同名目录已存在,请另选新目录名,不要覆盖已有内容:mkdir my-docker-static-lab &&cd m...

本练习用官方 nginx 镜像托管一份本地静态页,分别验证端口映射与文件挂载。假定本机已安装 Docker,在自选的本地实验目录中操作;不需要云服务器,也不对公网开放端口。下列命令均为示例写法,按需改目录名或容器名后自行执行即可。

1. 准备静态页

在新的空目录里创建站点文件。若同名目录已存在,请另选新目录名,不要覆盖已有内容:

mkdir my-docker-static-lab &&
cd my-docker-static-lab &&
mkdir site &&
cat > site/index.html <<'HTML'
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>Docker 静态站点示例</title>
</head>
<body>
  <h1>端口映射与只读挂载已生效</h1>
  <p>若能在浏览器打开本页,说明主机目录已映射进容器。</p>
</body>
</html>
HTML

整段用 && 串联:任一步失败(例如目录已存在)则后续不会执行,因而不会写入 index.html。site/ 只放这一份示例页,后续挂载也只指向它。

2. 启动命名的示例容器

使用 nginx:stable-alpine,示例容器名为 demo-static-nginx-8080。若该名称已被占用,请先换一个新名字,并把下文 docker ps、docker logs、docker stop 中的名字一并改掉;不要去停止已有容器。

docker run -d --rm \
  --name demo-static-nginx-8080 \
  -p 127.0.0.1:8080:80 \
  -v "$(pwd)/site:/usr/share/nginx/html:ro" \
  nginx:stable-alpine

参数说明:

  • -p 127.0.0.1:8080:80:左边是主机侧——只监听本机环回地址的 8080;右边是容器内 nginx 默认的 80。写成 127.0.0.1:... 表示仅本机可访问。
  • -v "$(pwd)/site:/usr/share/nginx/html:ro":把主机当前目录下的 site 以 bind mount、只读方式挂到容器网站根目录。通过该挂载,容器不能修改主机上的 site;改主机上的 index.html 后刷新页面即可看到变化。
  • --rm:容器停止后自动删除,一般不必再执行 docker rm。

主机端口管「请求从哪进来」,挂载目录管「页面从哪读」,职责不同。

3. 用 curl 确认

curl -sS http://127.0.0.1:8080/

正常时应返回刚才写入的标题和段落。本机浏览器打开同一地址也可以核对。

4. 排查与清理

若页面打不开,可先看示例容器是否在跑,再查日志:

docker ps --filter name=demo-static-nginx-8080
docker logs demo-static-nginx-8080

练习结束只停止本示例容器:

docker stop demo-static-nginx-8080

因启动时加了 --rm,停止后该容器记录会自动清掉。不必做整机级 Docker 清理,也不要用 sudo,更不要删除实验目录以外的文件。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。