Docker Compose编排(写法格式及实验)

本文介绍了Docker Compose,它的前身是Fig,是用于定义和运行多容器Docker应用的工具。阐述了其文件结构、配置常用字段和常用命令。还详细说明了使用compose编排安装运行及创建tomcat容器的步骤,包括环境部署、编写yml文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Docker Compose前言

  • Docker Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig
  • Docker Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器,而不再需要使用shell脚本来启动容器
  • Docker Compose 非常适合组合使用多个容器进行开发的场景

二、Docker compose 的文件结构

YAML是一种标记语言很直观的数据序列化格式。

  • 文件格式及编写注意事项如下所示:
  • 不支持制表符Tab建缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如:冒号,逗号,横杆。
  • 用#号注释
  • 如果包含特殊字符用单引号引起来。
  • 布尔值必须用单引号括起来

1、docker compose配置常用字段

字段描述
build docker context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
environment添加环境变量
networks加入网络
ports暴露容器端口,与-p相同,但不能低于60
volumes挂载宿主机路径或命令卷
restart重启策略,默认no,always,no-failure,unless-stoped
hostname容器主机名

2、docker compose常用命令

字段描述
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

三、使用compose编排

1、使用compose编排 安装运行tomcat容器

环境部署所有主机安装docker环境(内容为docker基础)

yum install docker-ce -y

在这里插入图片描述

将compose包直接拖入

cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

在这里插入图片描述
在这里插入图片描述

2、使用compose编排创建容器(以tomcat为例)

编写yml文件

vim tomcat-compose.yml

version: '3'
services:
 tomcat:
  hostname: tomcat
  build :
   context: ./tomcat
   dockerfile: Dockerfile
  ports:
   - 6677:8080
  networks:
   - cluster
networks:
 cluster:

在这里插入图片描述

放入相关文件
在这里插入图片描述
在这里插入图片描述

编写的Dockerfile

在这里插入图片描述

执行yml文件创建容器

docker-compose -f docker-compose.yml up -d

在这里插入图片描述
在这里插入图片描述
直接访问网页
在这里插入图片描述

### Nginx 编排文件配置示例及语法说明 #### Kubernetes 部署 Nginx 的 YAML 文件示例 以下是通过 Kubernetes 创建 Nginx Deployment 的 `nginx_deployment.yaml` 文件的完整示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx-container image: nginx:latest ports: - containerPort: 80 ``` 上述配置定义了一个名为 `nginx-deployment` 的 Deployment,其中包含三个副本 (replicas),并使用官方最新的 Nginx Docker 镜像运行容器。端口 80 被暴露用于外部访问[^1]。 --- #### 使用 kubectl 查看 Pod 列表 执行以下命令可以查看当前集群中的 Pods 列表及其状态: ```bash kubectl get pods ``` 此命令会返回所有正在运行的 Pods 及其对应的节点信息、启动时间和其他元数据。 --- #### Docker Compose 编排 Nginx 的 YML 文件示例 对于基于 Docker Compose 的场景,可以通过如下方式编写 `docker-compose.yml` 来管理 Nginx 容器的服务编排: ```yaml version: '3.9' services: webserver: image: nginx:latest container_name: nginx_webserver restart: always ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro - ./conf.d:/etc/nginx/conf.d:ro environment: - NGINX_HOST=example.com networks: - frontend networks: frontend: driver: bridge ``` 在此配置中: - **image**: 指定使用的镜像是最新版本的 Nginx。 - **ports**: 将主机上的 8080 端口映射到容器内的 80 端口。 - **volumes**: 绑定本地目录至容器内部路径,例如 HTML 文件夹和自定义配置文件夹 `/etc/nginx/conf.d/`。 - **environment**: 设置环境变量供 Nginx 使用。 - **networks**: 声明网络以便与其他服务通信[^2]。 --- #### Docker Compose 中高级选项解析 当需要更复杂的挂载需求时,LONG 语法允许进一步细化绑定参数。例如,在挂载卷时指定目标路径、UID/GID 和权限模式: ```yaml volumes: - type: bind source: ./logs target: /var/log/nginx read_only: false bind: propagation: shared volume: nocopy: true consistency: delegated uid: "1000" gid: "1000" mode: "0755" ``` 以上片段展示了如何精确控制挂载行为,包括但不限于传播属性 (`propagation`)、一致性模型 (`consistency`) 和具体的 Unix 文件权限 (`mode`)。默认情况下,挂载的文件权限为只读 (`0444`);如果尝试赋予写权限,则会被忽略除非显式声明可执行位。 --- #### 总结 无论是采用 Kubernetes 还是 Docker Compose 方案,都可以实现高效的 Nginx 应用程序部署与维护工作流。前者适合大规模分布式系统下的自动化调度,而后者更适合开发测试阶段的小型项目快速迭代。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值