一、概述 docker-compose 项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排,来轻松高效的管理容器,定义运行多个容器。
docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner) docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。 一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。 一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。 docker-compose的工程配置文件默认为 docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。 官方文档:https://docs.docker.com/compose/
GitHub:https://github.com/docker/compose/releases/
以前也写过一篇关于docker compose基础的文章,有兴趣的可以先查阅看看:Docker三剑客之Compose
二、Compose 和 Docker 兼容性 Compose 文件格式有多个版本:1、2、2.x、和 3.x。下面的表格是 Compose 文件所支持的指定的 docker 发行版:
三、安装 docker
安装yum-config-manager配置工具
yum -y install yum-utils
建议使用阿里云yum源:(推荐)
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce版本
yum install -y docker-ce
启动并开机启动
systemctl enable –now docker docker –version
四、安装 docker-compose 官方安装地址教程:https://docs.docker.com/compose/install/other/
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/bin/docker-compose docker-compose –version
五、环境变量 Docker Compose 允许你使用多种方法为服务设置环境变量。这些环境变量可以用来配置你的应用程序或将敏感信息传递给你的容器。
下面是一些设置 Docker Compose 环境变量的方法:
1)在 docker-compose.yml 文件中设置环境变量 你可以在 docker-compose.yml 文件中为每个服务设置环境变量。在服务配置中,使用 environment 关键字,并在其中列出需要设置的环境变量和其值。
services: web: image: nginx environment: MY_VAR: my_value
2)从 .env 文件中读取环境变量 你可以将环境变量存储在一个 .env 文件中,并让 Docker Compose 读取它。在 docker-compose.yml 文件中,使用 env_file 关键字并指定 .env 文件的路径。
services: web: image: nginx env_file:
- .env
3)使用 shell 环境变量 你也可以在启动 docker-compose 命令时,使用 shell 环境变量传递环境变量值。例如:
$ export MY_VAR=my_value $ docker-compose up
在 docker-compose.yml 文件中使用 ${MY_VAR} 语法来引用 shell 环境变量。
services: web: image: nginx environment: MY_VAR: ${MY_VAR}
使用环境变量可以使你的应用程序更具灵活性,并且可以方便地管理敏感信息。
六、编排中的字段详解 在 Docker Compose 编排文件中,有一些重要的字段需要了解:
1)version version 字段指定了 Docker Compose 编排文件的版本。当前最新版本是 3。 version: ‘3’
2)services services 字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。以下是一个简单的 services 配置的示例:
services: web: build: . ports:
- “5000:5000” redis: image: “redis:alpine”
3)build 与 image 1、build build 字段允许在 Docker Compose 编排中指定 Dockerfile 的位置,从而可以使用 Docker Compose 构建镜像。例如,以下是使用本地 Dockerfile 的示例: services: web: build: .
也可以指定一个包含 Dockerfile 的目录: services: web: build: ./my-web-app
2、image image 字段指定要使用的 Docker 镜像。例如: services: web: image: nginx 【温馨提示】build 和 image 二选一即可,也可以同时写,但是一般只选择image吧。
version: ‘3.8’ services: web: build: ./web image: myapp/web:latest
上面的配置指定了服务名称为web,Dockerfile路径为./web,镜像名称为 myapp/web,标签为 latest。在运行docker-compose build 命令时,会自动构建名为 myapp/web:latest 的镜像。 4)networks networks 字段指定了要使用的网络。默认情况下,Docker Compose 创建一个名为 default 的网络。以下是一个使用自定义网络的示例: networks: my-network: driver: bridge 5)volumes volumes 字段指定了要使用的数据卷。以下是一个使用数据卷的示例(下面会细讲): volumes: my-volume: driver: local
6)environment 与 environment_file 1、environment environment 字段指定了要设置的环境变量。以下是一个使用环境变量的示例: environment: MY_VAR: my_value 2、environment_file environment_file:指定从文件中读取环境变量。 environment_file: .env 7)ports 与 expose 1、ports ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)。以下是一个使用端口映射的示例: ports:
- “8080:80” 2、expose expose 字段是用于在 Docker 容器内部暴露端口的选项,可以让其他容器连接到这些端口,但不会将它们映射到 Docker 主机上。
在 docker-compose.yml 文件中使用 expose 选项来指定容器内部需要暴露的端口。例如,以下示例定义了一个 web 服务,它暴露了 8000 和 8080 端口:
version: ‘3’ services: web: image: myapp:latest expose:
- “8000”
- “8080”
当您使用 expose 选项时,其他容器可以使用 Docker 的内部网络进行连接。例如,如果您有另一个服务 worker,它需要连接到 web 服务的 8000 端口,则可以在 worker 服务的 docker-compose.yml 文件中使用 links 选项:
version: ‘3’ services: worker: image: myworker:latest links:
- web
8)depends_on
depends_on 字段指定了服务之间的依赖关系。例如,如果 web 服务依赖于 db 服务,则可以使用以下示例:
depends_on:
- db 9)restart Docker Compose 提供了几种重启策略,以便在容器出现故障时自动重启它们。以下是可用的重启策略:
评论(0)
暂无评论