Docker 入门:作用、用法与 Web 镜像示例

太微2025-04-08运维DockerNginx入门

Docker 入门:作用、用法与 Web 镜像示例

Docker 把应用连同运行环境一起打成镜像(Image),用容器(Container)在任意装了 Docker 的机器上一致地运行。对前端与 Web 场景,常见用途是:把构建产物(如 dist)放进 Nginx 镜像,一键部署、扩缩容、与 CI/CD 对接。

1. Docker 是做什么的

概念含义
镜像只读模板,分层存储;由 Dockerfile 描述如何构建。
容器镜像的运行实例,有进程、网络、可写层;删容器不删镜像(除非用 --rm)。
作用环境一致(开发/测试/生产)、隔离快速交付、便于编排(Compose、K8s)。

与「本机装 Nginx」相比:镜像里自带版本与配置,换机器行为一致,不污染宿主机全局环境。

2. 前置:安装与验证

安装 Docker Desktopopen in new window(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;运行中需先 stopdocker rm -f my-web-app
删除镜像docker rmi my-web:1.0(需无容器再使用该镜像,或先删容器)

说明stop 是优雅停止;start 复用原有容器与参数。run 每次会新建一个容器实例;若同名已存在,需先删旧容器或换 --name

5. 小结

  • 作用:用镜像固化「Nginx + 静态文件 + 可选配置」,实现环境一致、易部署。
  • 配置:主要在 Dockerfile(基础镜像、COPYEXPOSE)与可选 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。

Last Updated 4/9/2026, 6:16:02 AM