简介
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它能够简化在单个主机上使用多个容器的部署过程。使用 Docker Compose,您可以使用简单的 YAML 文件来定义应用程序的服务、网络和卷,并通过单个命令一键启动、停止和重建整个应用程序。
Docker Compose 允许您在一个文件中指定各种容器,每个容器称为一个服务。您可以为每个服务配置各种选项,例如容器的映像、端口映射、环境变量、卷挂载等。通过定义这些服务,您可以描述多个容器之间的关系和依赖关系。
使用 Docker Compose 的主要优点之一是它具有声明性的语法。您只需编写一次配置文件,就可以轻松定义应用程序的整个部署结构。此外,Docker Compose 还提供了一些便捷的命令,使您可以轻松地管理和监控应用程序。
安装
在成功安装了 docker 之后,可以通过运行以下命令来安装Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 创建软链接
sudo chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose --version
使用步骤
使用Docker Compose可以按照以下步骤进行:
- 编写docker-compose.yml文件:在您的项目目录下创建一个
docker-compose.yml
文件,并使用文本编辑器(如vi、nano等)打开它。 - 定义服务:在
docker-compose.yml
文件中,通过定义services
节来指定每个容器的配置。每个服务都可以包含容器的名称、镜像、端口映射、环境变量、挂载的卷等。 - 定义网络:除了服务配置,您还可以定义网络。在
docker-compose.yml
文件中,可以使用networks
节定义您希望创建的网络。 - 添加卷:可以使用
volumes
节定义和配置容器的卷,以便进行数据持久化或与主机共享数据。 - 运行命令:进入到 docker-compose.yml 文件的所在的路径下,使用
docker-compose
命令来执行相关操作。以下是一些常见的命令示例:docker-compose up
:构建镜像并启动容器。docker-compose down
:停止并移除所有相关容器。docker-compose start
:启动已创建的容器。docker-compose stop
:停止正在运行的容器。docker-compose restart
:重启容器。docker-compose ps
:查看正在运行的容器状态。docker-compose logs
:查看容器的日志输出。docker-compose exec
:执行在容器内部运行的命令。
- 执行命令:根据需要,可以使用上述命令执行相应的操作,例如
docker-compose up
启动容器。
通过使用Docker Compose,您可以使用一个单一的命令或脚本来管理整个多容器应用程序,简化了复杂的部署和管理过程。
搭建 zookeeper 集群
首先,我们想使用 zookeeper 镜像生成三个容器,并在它们直接形成集群。
创建Zookeeper集群配置文件
-
在你选择的目录下创建一个名为
docker-zookeeper
的文件夹,并进入该文件夹:mkdir docker-zookeeper cd docker-zookeeper
-
创建一个名为
docker-compose.yml
的文件,并使用文本编辑器(如vi或nano)打开该文件:vi docker-compose.yml
-
将以下配置复制粘贴到
docker-compose.yml
文件中:restart: always # 当发生错误时自动重启 hostname: zookeeper01 container_name: zookeeper01 privileged: true ports: # 端口 - 2181:2181 volumes: # 挂载数据卷 - ./zookeeper01/data:/data - ./zookeeper01/datalog:/datalog environment: TZ: Asia/Shanghai ZOO_MY_ID: 1 # 节点ID ZOO_PORT: 2181 # zookeeper端口号 ZOO_SERVERS: server.1=zookeeper01:2888:3888;2181 server.2=zookeeper02:2888:3888;2181 server.3=zookeeper03:2888:3888;2181 # zookeeper节点列表 networks: - mynet # 自定义网络名 zookeeper02: image: zookeeper:3.5.7 restart: always hostname: zookeeper02 container_name: zookeeper02 privileged: true ports: - 2182:2181 volumes: - ./zookeeper02/data:/data - ./zookeeper02/datalog:/datalog environment: TZ: Asia/Shanghai ZOO_MY_ID: 2 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zookeeper01:2888:3888;2181 server.2=zookeeper02:2888:3888;2181 server.3=zookeeper03:2888:3888;2181 networks: - mynet zookeeper03: image: zookeeper:3.5.7 restart: always hostname: zookeeper03 container_name: zookeeper03 privileged: true ports: - 2183:2181 volumes: - ./zookeeper03/data:/data - ./zookeeper03/datalog:/datalog environment: TZ: Asia/Shanghai ZOO_MY_ID: 3 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zookeeper01:2888:3888;2181 server.2=zookeeper02:2888:3888;2181 server.3=zookeeper03:2888:3888;2181 networks: - mynet networks: mynet: # 自定义网络名
-
保存并关闭文件。
启动Zookeeper容器
-
返回到
docker-zookeeper
文件夹,并运行以下命令以启动Zookeeper容器:docker-compose up -d
-
运行命令
docker ps -a
来验证三个Zookeeper容器是否正在运行。 -
运行命令
docker exec -it zookeeper01 zkServer.sh status
查看zookeeper容器状态。ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: leader
集群部署成功!
标签:容器,compose,zookeeper,ZOO,2181,docker From: https://www.cnblogs.com/luler/p/17656793.html