主页 > 手机  > 

linux-Dockerfile及docker-compose.yml相关字段用途

linux-Dockerfile及docker-compose.yml相关字段用途

文章目录 计算机系统5G云计算LINUX Dockerfile及docker-conpose.yml相关字段用途一、Dockerfile1、基础指令2、.高级指令3、多阶段构建指令 二、Docker-Compose.yml1、服务定义(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目标路径需绝对路径,或相对于 WORKDIRADD类似 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默认是 SIGTERMHEALTHCHECK定义容器健康检查HEALTHCHECK --interval=30s CMD curl -f http://localhost检查状态可通过 docker inspect 查看SHELL指定默认 shellSHELL [“/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 或 ENTRYPOINTrestart容器重启策略restart: always可选值:no、always、on-failure、unless-stopped生产环境建议 unless-stopped 2、高级服务配置 字段用途示例说明healthcheck定义容器健康检查yamlhealthcheck: test: [“CMD”, “curl”, “-f”, “http://localhost”] interval: 30s timeout: 10s retries: 3影响 depends_on 的 condition行为deploy指定 Swarm 模式下的部署配置(普通 Compose 中部分字段可用)yamldeploy: replicas: 3 resources: limits: cpus: “0.5” memory: 512M需使用 docker stack deploy 命令label为服务添加元数据labels: - “com.example.description=Web Server”用于监控、日志等系统识别logging自定义日志配置yamllogging: driver: json-file options: max-size: “10m” max-file: “3”控制日志文件大小和数量config/secrets挂载配置文件或密钥(Swarm 模式专用)yamlconfigs: - source: app_config target: /app/config.yaml需在顶层定义 configs 或 secrets 3、网络配置 (networks) 字段用途示例说明driver指定网络驱动类型driver: bridge 或 overlay(Swarm 模式)默认 bridge,生产环境可选 overlayexternal使用已存在的网络external: true需先通过 docker network create 创建ipam自定义 IP 地址管理yamlipam: config: - subnet: 172.28.0.0/16用于精细控制子网和 IP 分配 4、卷配置 (volumes) 字段用途示例说明driver指定卷驱动driver: local支持第三方驱动(如 nfs、aws)driver_opts驱动参数yamldriver_opts: type: “nfs” o: “addr=10.0.0.1,nolock,soft”根据驱动类型配置参数external使用已存在的卷external: true需先通过 docker volume create 创建 5、扩展配置 字段用途示例说明extends继承其他 Compose 文件的服务配置yamlservices: web: extends: file: common-services.yml service: base-web用于共享通用配置rvices.yml service: base-web用于共享通用配置profiles定义服务启用的配置集profiles: [“debug”]通过 --profile 参数激活:docker-compose --profile debug up
标签:

linux-Dockerfile及docker-compose.yml相关字段用途由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“linux-Dockerfile及docker-compose.yml相关字段用途