北京公司网站制作费用,做库房推广哪个网站好,微分销商城系统,手机网站seo优化目录
docker build 笔记
1. 路径解析
2. 关键注意事项 2. docker compose up -d
核心区别对比
常见工作流
补充说明
1. 功能区别
2. 协作关系
场景 1#xff1a;Compose 自动调用 Build
场景 2#xff1a;先 Build 后 Compose
3. 关键区别
4. 为什么需要协作Compose 自动调用 Build
场景 2先 Build 后 Compose
3. 关键区别
4. 为什么需要协作
5. 实际工作流示例
开发阶段
生产部署
总结 docker build 和 docker compose up -d 是 Docker 生态系统中两个不同的命令用于不同的场景。以下是它们的核心区别 docker build 笔记
docker build -t my-app:1.0 .
是的docker build -t my-app:1.0 . 命令会自动读取当前目录下的 Dockerfile文件名必须严格为 Dockerfile大小写敏感。以下是详细说明 1. 路径解析 . 表示“当前目录” 命令最后的 . 是构建上下文Build Context的路径Docker 会将该目录下的所有文件递归发送给 Docker 守护进程daemon并在其中查找 Dockerfile。 例如若在 /home/user/project 下执行命令则默认读取 /home/user/project/Dockerfile。 自定义 Dockerfile 路径 如果 Dockerfile 不在当前目录或使用了其他文件名需通过 -f 指定 docker build -t my-app:1.0 -f ./subdir/CustomDockerfile . 此时仍以 .当前目录为构建上下文但使用指定文件作为构建指令。 2. 关键注意事项 Dockerfile 必须存在 如果当前目录没有 Dockerfile会报错 ERROR: Cannot locate specified Dockerfile: Dockerfile 构建上下文的影响 Docker 会将上下文目录的所有文件发送给守护进程可能导致传输量大。 通过 .dockerignore 文件可排除不需要的文件类似 .gitignore。 镜像标签-t -t my-app:1.0 为生成的镜像指定名称和标签后续可通过 docker run my-app:1.0 运行。 2. docker compose up -d
作用 根据 docker-compose.yml 文件启动和管理多容器应用包括构建镜像、创建网络、挂载卷等。
关键特点 输入需要一个 docker-compose.yml 文件定义多容器服务的配置。 输出启动一个或多个容器基于现有镜像或自动构建镜像。 典型用途 启动复杂的多服务应用如 Web 数据库 Redis。 管理容器间的依赖关系和网络配置。 一键启停整个应用环境。
示例
docker compose up -d # 根据 docker-compose.yml 启动所有服务-d 表示后台运行 核心区别对比
特性docker builddocker compose up -d作用对象单个镜像多容器应用服务、网络、卷等输入文件Dockerfiledocker-compose.yml输出结果生成镜像启动容器可能包含构建镜像的步骤典型场景构建自定义镜像部署完整的多服务环境依赖关系不涉及其他容器可定义服务间的依赖如数据库先启动网络/卷管理无自动创建网络和卷 常见工作流 开发阶段 用 docker build 构建镜像。 用 docker compose up 测试多服务交互。 生产部署 直接使用 docker compose up -d如果 docker-compose.yml 中已定义镜像来源。 调试 docker build 失败时检查 Dockerfile。 docker compose up 失败时检查服务配置或日志。 补充说明 如果 docker-compose.yml 中包含 build 字段docker compose up 会自动构建镜像相当于隐式调用 docker build。 -d 参数表示“后台运行”detached mode不加则会附着到容器日志输出。 推荐组合使用先 build 测试镜像再通过 compose 编排完整环境。 1. 功能区别
命令/工具docker builddocker compose核心职责构建镜像从 Dockerfile 生成镜像编排多容器应用定义和运行多服务环境输入文件Dockerfiledocker-compose.yml操作对象单个镜像多个容器、网络、存储卷等资源典型场景将代码打包成可运行的镜像一键启动完整的应用栈如 Web DB Redis 2. 协作关系
场景 1Compose 自动调用 Build
如果 docker-compose.yml 中定义了 build 字段运行 docker compose up 时会自动触发 docker build
services:webapp:build: . # 根据当前目录的 Dockerfile 构建镜像ports:- 8000:8000
执行命令
docker compose up -d # 自动构建镜像并启动容器
场景 2先 Build 后 Compose 手动构建镜像 docker build -t my-app:1.0 . 在 Compose 中引用已有镜像 services:webapp:image: my-app:1.0 # 直接使用已构建的镜像ports:- 8000:8000 启动服务 docker compose up -d 3. 关键区别
维度docker builddocker compose层级底层命令镜像构建高层工具应用编排依赖只需要 Dockerfile依赖 docker-compose.yml 和镜像是否管理容器否是创建、启动、停止容器网络/卷不涉及自动管理网络和存储卷 4. 为什么需要协作 开发效率 docker compose 通过一个命令即可完成镜像构建如果需要和容器启动简化流程。 环境一致性 docker-compose.yml 可定义完整的服务依赖如数据库先于应用启动避免手动操作错误。 复用性 构建好的镜像docker build 生成可被多个 Compose 项目共享。 5. 实际工作流示例
开发阶段 编写 Dockerfile 定义应用环境。 编写 docker-compose.yml 配置服务依赖。 运行 docker compose up --build # 强制重新构建镜像并启动
生产部署 构建生产镜像 docker build -t my-app:prod . 通过 Compose 部署 # docker-compose.prod.yml
services:app:image: my-app:prod # 直接使用构建好的镜像deploy:replicas: 3 启动 docker compose -f docker-compose.prod.yml up -d 总结 docker build 是构建镜像的工具docker compose 是编排多容器应用的工具。 Compose 可以依赖 Build通过 build: 字段但也可以直接使用已存在的镜像通过 image: 字段。 两者结合使用能实现从代码到完整应用环境的无缝管理。