新乡做网站老年门户网站建设的意义
文章目录
- 计算机系统
- 5G云计算
- LINUX Dockerfile及docker-conpose.yml相关字段用途
- 一、Dockerfile
- 1、基础指令
- 2、.高级指令
- 3、多阶段构建指令
- 二、Docker-Compose.yml
- 1、服务定义(services)
- 2、高级服务配置
- 3、网络配置 (networks)
- 4、卷配置 (volumes)
- 5、扩展配置
计算机系统
5G云计算
LINUX Dockerfile及docker-conpose.yml相关字段用途
一、Dockerfile
1、基础指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| FROM | 指定基础镜像 | FROM ubuntu:20.04 | 必须是第一条指令(ARG除外) |
| RUN | 执行命令并创建新的镜像层 | RUN apt-get update | 合并多个操作用&&减少层数 |
| CMD | 指定容器启动时的默认命令 | CMD [“nginx”, “-g”, “daemon off;”] | 只能有一个 CMD,会被 docker run 的参数覆盖 |
| ENTRYPOINT | 指定容器启动时的入口命令 | ENTRYPOINT [“python”, “app.py”] | 与 CMD 配合使用(CMD 作为参数) |
| COPY | 复制文件/目录到镜像中 | COPY ./src /app/src | 目标路径需绝对路径,或相对于 WORKDIR |
| ADD | 类似 COPY,但支持 URL 和解压压缩包 | ADD url路径 /data | 优先使用 COPY,避免意外解压 |
| WORKDIR | 设置工作目录 | WORKDIR /app | 后续指令默认在此目录下执行 |
| ENV | 设置环境变量 | ENV NODE_ENV=production | 变量可在容器运行时使用 |
| ARG | 定义构建时的参数 | ARG VERSION=1.0 | 仅在构建阶段有效,容器运行时不可见 |
| EXPORTS | 声明容器监听的端口 | EXPOSE 80/tcp | 仅文档作用,实际端口映射由 docker run -p 控制 |
2、.高级指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| VOLUME | 定义匿名数据卷 | VOLUME [“/data”] | 数据卷在容器运行时自动创建 |
| USER | 指定运行后续命令的用户 | USER appuser | 需确保用户已存在(先通过 RUN useradd 创建) |
| LABEL | 添加元数据 | LABEL maintainer=“example” | 替代已弃用的 MAINTAINER 指令 |
| ONBUILD | 定义触发器指令(在子镜像构建时触发) | ONBUILD COPY . /app | 常用于基础镜像的继承场景 |
| STOPSIGNAL | 设置容器停止时的信号 | STOPSIGNAL SIGTERM | 默认是 SIGTERM |
| HEALTHCHECK | 定义容器健康检查 | HEALTHCHECK --interval=30s CMD curl -f http://localhost | 检查状态可通过 docker inspect 查看 |
| SHELL | 指定默认 shell | SHELL [“/bin/bash”, “-c”] | 影响后续 RUN、CMD、ENTRYPOINT 的解析方式 |
3、多阶段构建指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| FROM … AS <stage> | 定义多阶段构建的命名阶段 | FROM ubuntu:20.04 AS builder | 分阶段构建减少最终镜像体积 |
| COPY --from=<stage> | 从其他阶段复制文件 | COPY --from=builder /app/bin /usr/local/bin | 仅复制所需文件到最终镜像 |
二、Docker-Compose.yml
1、服务定义(services)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| image | 指定服务使用的镜像 | image: redis:7.0 | 优先从仓库拉取镜像 |
| build | 基于 Dockerfile 构建镜像 | build: ./app 或指定上下文和 Dockerfile: build: context: ./app dockerfile: Dockerfile.prod | 与 image 二选一,构建后镜像名为 项目名_服务名 |
| ports | 端口映射(宿主机:容器) | ports: - “8080:80” | 支持范围映射:“3000-3005:3000-3005” |
| volumes | 挂载数据卷或宿主机目录 | volumes: - ./data:/app/data - db-data:/var/lib/mysql | 匿名卷用容器内路径,命名卷需在顶层 volumes 定义 |
| environment | 设置环境变量 | environment: - DB_HOST=db - DEBUG=1 | 或使用键值对格式: environment: { DB_HOST: db } |
| env_file | 从文件加载环境变量 | env_file: .env 或指定多个文件 env_file: [.env, .env.secret] | 文件中的变量会覆盖 environment 字段 |
| network | 指定服务连接的网络 | networks: - frontend - backend | 需在顶层 networks 定义网络 |
| depend_on | 定义服务启动顺序依赖 | depends_on: - db - redis | 不保证服务完全就绪,仅控制启动顺序 |
| command | 覆盖容器默认启动命令 | command: [“python”, “app.py”, “–debug”] | 覆盖 Dockerfile 中的 CMD 或 ENTRYPOINT |
| restart | 容器重启策略 | restart: always 可选值: no、always、on-failure、unless-stopped | 生产环境建议 unless-stopped |
2、高级服务配置
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| healthcheck | 定义容器健康检查 | yaml healthcheck: test: [“CMD”, “curl”, “-f”, “http://localhost”] interval: 30s timeout: 10s retries: 3 | 影响 depends_on 的 condition行为 |
| deploy | 指定 Swarm 模式下的部署配置(普通 Compose 中部分字段可用) | yaml deploy: replicas: 3 resources: limits: cpus: “0.5” memory: 512M | 需使用 docker stack deploy 命令 |
| label | 为服务添加元数据 | labels: - “com.example.description=Web Server” | 用于监控、日志等系统识别 |
| logging | 自定义日志配置 | yaml logging: driver: json-file options: max-size: “10m” max-file: “3” | 控制日志文件大小和数量 |
| config/secrets | 挂载配置文件或密钥(Swarm 模式专用) | yaml configs: - source: app_config target: /app/config.yaml | 需在顶层定义 configs 或 secrets |
3、网络配置 (networks)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| driver | 指定网络驱动类型 | driver: bridge 或 overlay(Swarm 模式) | 默认 bridge,生产环境可选 overlay |
| external | 使用已存在的网络 | external: true | 需先通过 docker network create 创建 |
| ipam | 自定义 IP 地址管理 | yaml ipam: config: - subnet: 172.28.0.0/16 | 用于精细控制子网和 IP 分配 |
4、卷配置 (volumes)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| driver | 指定卷驱动 | driver: local | 支持第三方驱动(如 nfs、aws) |
| driver_opts | 驱动参数 | yaml driver_opts: type: “nfs” o: “addr=10.0.0.1,nolock,soft” | 根据驱动类型配置参数 |
| external | 使用已存在的卷 | external: true | 需先通过 docker volume create 创建 |
5、扩展配置
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| extends | 继承其他 Compose 文件的服务配置 | yaml services: web: extends: file: common-services.yml service: base-web | 用于共享通用配置 |
| rvices.yml service: base-web | 用于共享通用配置 | ||
| profiles | 定义服务启用的配置集 | profiles: [“debug”] | 通过 --profile 参数激活: docker-compose --profile debug up |
