docker搭web服务核心是拉镜像、运行容器、连通宿主机;需正确端口映射(如-p 8080:80)和目录挂载(如-v ./html:/usr/share/nginx/html),并用docker ps、logs、curl验证,推荐后续用docker-compose统一管理。

用 Docker 搭 Web 服务,核心就三件事:拉镜像、跑容器、连通宿主机。不复杂但容易忽略细节,配错端口或路径就打不开页面。
选对镜像,快速启动
官方 Nginx 镜像是最稳妥的选择,兼容性好、更新及时:
- 拉取最新版:
docker pull nginx - 拉取指定版本(更稳定):
docker pull nginx:1.25-alpine(推荐轻量 Alpine 版) - 验证是否下载成功:
docker images | grep nginx
端口映射和文件挂载是关键
只跑容器不映射,外部根本访问不到;不挂载静态文件,改 HTML 就得重做镜像。
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 基础运行(8080 → 容器内 80):
docker run -d --name my-nginx -p 8080:80 nginx - 带网页目录挂载(推荐):
docker run -d --name my-nginx -p 8080:80 -v $(pwd)/html:/usr/share/nginx/html nginx
注意:/usr/share/nginx/html是容器内固定路径,不能写错;$(pwd)/html是你本地放 index.html 的文件夹 - 加配置挂载(如需自定义 server 块):
-v $(pwd)/conf.d:/etc/nginx/conf.d
验证和调试别跳过
启动后别急着开浏览器,先确认容器真在跑、端口真通了:
- 查运行状态:
docker ps | grep nginx,看 STATUS 是否为 “Up” - 查日志(报错第一时间看):
docker logs my-nginx - 本地 curl 测试:
curl http://localhost:8080,返回 HTML 内容才算通 - 防火墙检查:Linux 上确认
ufw或firewalld放行了 8080 端口
进阶建议:用 docker-compose 管理更稳
单容器够用,但后续加 MySQL、Redis 或 HTTPS 就该上 docker-compose 了:
- 新建
docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:1.25-alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
- ./conf.d:/etc/nginx/conf.d- 一键启停:
docker-compose up -d启动,docker-compose down清理










