Docker 静态站点入门:把端口映射和文件挂载分开验证
【摘要】 本练习用官方 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)