Docker 入门:作用、用法与 Web 镜像示例
Docker 入门:作用、用法与 Web 镜像示例
Docker 把应用连同运行环境一起打成镜像(Image),用容器(Container)在任意装了 Docker 的机器上一致地运行。对前端与 Web 场景,常见用途是:把构建产物(如 dist)放进 Nginx 镜像,一键部署、扩缩容、与 CI/CD 对接。
1. Docker 是做什么的
| 概念 | 含义 |
|---|---|
| 镜像 | 只读模板,分层存储;由 Dockerfile 描述如何构建。 |
| 容器 | 镜像的运行实例,有进程、网络、可写层;删容器不删镜像(除非用 --rm)。 |
| 作用 | 环境一致(开发/测试/生产)、隔离、快速交付、便于编排(Compose、K8s)。 |
与「本机装 Nginx」相比:镜像里自带版本与配置,换机器行为一致,不污染宿主机全局环境。
2. 前置:安装与验证
安装 Docker Desktop(Windows/macOS)或 Linux 发行版包。终端执行:
docker version
docker run hello-world
能正常拉取并运行 hello-world 即环境可用。
3. Web 示例:用 Nginx 提供静态站点
假设项目构建后得到 dist/ 目录(如 Vue/React 的 npm run build 输出)。
3.1 目录示例
my-web/
├── dist/ # 构建产物(复制进镜像)
├── Dockerfile
└── nginx.conf # 可选:自定义 Nginx 配置
3.2 Dockerfile
# 使用官方 Nginx 作为基础镜像(轻量、维护活跃)
FROM nginx:1.27-alpine
# 删除默认站点,放入你的静态资源
COPY dist/ /usr/share/nginx/html/
# 可选:使用自定义配置(不配则使用镜像内默认)
# COPY nginx.conf /etc/nginx/conf.d/default.conf
# 官方镜像已暴露 80;声明端口便于文档与编排工具识别
EXPOSE 80
# nginx 镜像默认 CMD 已是 nginx 前台运行,一般无需再写 CMD
3.3 可选:nginx.conf(自定义路由、缓存等)
若需要 SPA 回退到 index.html,可单独写配置再 COPY 覆盖默认文件:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
构建时在 Dockerfile 中取消注释 COPY nginx.conf ... 一行即可。
3.4 构建镜像(打包)
在 Dockerfile 所在目录执行:
docker build -t my-web:1.0 .
-t my-web:1.0:镜像名与标签(仓库名:标签),标签不写时默认latest。.:构建上下文路径(当前目录),会把该目录发给 Docker 守护进程,因此COPY dist/要求本机已有dist/。
构建成功后可用 docker images 查看本地镜像列表。
3.5 运行容器
docker run -d --name my-web-app -p 8080:80 my-web:1.0
| 参数 | 含义 |
|---|---|
-d | 后台运行(detached)。 |
--name my-web-app | 容器名,便于后续 停止/删除/日志。 |
-p 8080:80 | 宿主机 8080 映射到容器 80(浏览器访问 http://localhost:8080)。 |
浏览器打开 http://localhost:8080 应能看到静态页。
其他常用运行参数示例:
# 映射端口 + 容器退出后自动删除
docker run --rm -d -p 8080:80 --name my-web-app my-web:1.0
# 挂载本地目录覆盖镜像内文件(开发调试静态资源,无需重建镜像)
docker run -d -p 8080:80 -v /path/to/dist:/usr/share/nginx/html:ro --name my-web-app my-web:1.0
(Windows 路径可写成 D:/project/dist 等形式,注意 Docker Desktop 的盘符共享设置。)
4. 常用命令:查看、日志、进入、启停、删除
| 操作 | 命令 |
|---|---|
| 查看运行中容器 | docker ps |
| 查看全部容器(含已停止) | docker ps -a |
| 查看日志 | docker logs my-web-app;持续跟踪加 -f |
| 停止 | docker stop my-web-app |
| 再次启动(容器仍在,只是停了) | docker start my-web-app |
| 重启 | docker restart my-web-app |
| 删除已停止的容器 | docker rm my-web-app;运行中需先 stop 或 docker rm -f my-web-app |
| 删除镜像 | docker rmi my-web:1.0(需无容器再使用该镜像,或先删容器) |
说明:stop 是优雅停止;start 复用原有容器与参数。run 每次会新建一个容器实例;若同名已存在,需先删旧容器或换 --name。
5. 小结
- 作用:用镜像固化「Nginx + 静态文件 + 可选配置」,实现环境一致、易部署。
- 配置:主要在 Dockerfile(基础镜像、
COPY、EXPOSE)与可选 nginx.conf。 - 打包:
docker build -t 镜像名:标签 . - 启动:
docker run -d -p 宿主机端口:80 --name 容器名 镜像:标签 - 停止 / 再启:
docker stop 容器名,docker start 容器名
多服务编排可在同目录增加 docker-compose.yml,用 docker compose up -d / docker compose down 管理,适合本地联调与小型部署;进阶再接入镜像仓库与 K8s。
