内容简介:Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。使用 Compose 基本会有如下三步流程:目前有两种主流安装方式,笔者使用了第一种方式。
Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。
使用 Compose 基本会有如下三步流程:
- 在 Dockfile 中定义你的应用环境,使其可以在任何地方复制。
- 在 docker-compose.yml 中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行。
- 最后,运行dcoker-compose up,Compose 将启动并运行整个应用程序。
安装docker-Compose
目前有两种主流安装方式,笔者使用了第一种方式。
第一种
下载最新的docker-compose文件
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 复制代码
下载完成后需要对 /usr/local/bin/docker-compose
目录进行赋权
chmod +x /usr/local/bin/docker-compose 复制代码
测试结果
docker-compose --version 输出 docker-compose version 1.16.1, build 6d1ac21 复制代码
第二种
通过pip方式安装
pip install docker-compose 复制代码
前提是需要你的服务器已经装了pip组件
卸载
第一种
rm /usr/local/bin/docker-compose 复制代码
第二种
pip uninstall docker-compose 复制代码
使用
我们这里以kafka为例
version: '2'
services:
zoo1:
# 依赖于wurstmeister/zookeeper镜像,本地无则自动下载
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zoo1
# 映射端口
ports:
- "2181:2181"
# 容器名称
container_name: zookeeper
kafka1:
# 依赖于wurstmeister/kafka镜像
image: wurstmeister/kafka
# 映射端口
ports:
- "9092:9092"
# 目录挂载 【容器目录:宿主机目录】
volumes:
- /var/log/kafka/logs:/var/docker/kafka/logs
# 配置环境变量
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
# 解决服务启动顺序问题,例如下面容器会先确定zoo1和 redis 两个服务,最后才启动kafka1服务
depends_on:
- zoo1
- redis(实际无该容器)
# 容器名称
container_name: kafka
复制代码
执行docker-compose
首先将docker-compos.yml上传至服务器,然后进入目录执行:
docker-compose up -d 复制代码
则开始后台构建服务
如果想单独启动一个服务,你可以:
docker-compose up -d 指定服务名称 例子:docker-compose up -d zoo1 复制代码
服务排编案例
version: "3"
services:
# 指定服务名称
#服务注册与发现中心
simonEureka:
image: simon/eureka-server:2.0.1-SNAPSHOT
hostname: simonEureka
ports:
- "8100:8100"
#配置中心
simonConfig:
image: simon/config-server:2.0.1-SNAPSHOT
hostname: simonConfig
ports:
- "8101:8101"
depends_on:
- simonEureka
# always – 不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
# no – 容器退出时不要自动重启。这个是默认值。
# on-failure[:max-retries] – 只在容器以非0状态码退出时重启。可选的,可以退出docker daemon尝试重启容器的次数。
# unless-stopped - 不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。
restart: always
#路由网关
apigateway:
image: simon/apigateway:2.0.1-SNAPSHOT
ports:
- "8102:8102"
depends_on:
- simonEureka
- simonConfig
restart: always
#监控平台
admin:
image: simon/admin:2.0.1-SNAPSHOT
ports:
- "8103:8103"
depends_on:
- simonEureka
- simonConfig
restart: always
---------------------
作者:AaronSimon
来源:CSDN
原文:https://blog.csdn.net/aaronsimon/article/details/82711610
版权声明:本文为博主原创文章,转载请附上博文链接!
复制代码
这个时候我们服务器simon目录的文件应该如下:
apigateway:2.0.1-SNAPSHOT.jar admin:2.0.1-SNAPSHOT.jar config-server:2.0.1-SNAPSHOT.jar eureka-server:2.0.1-SNAPSHOT.jar docker-compose.yml 复制代码
注意点
如果我们的yml文件不是docker-compose.yml时我们在进行服务排编是需要指定yml文件名称。
docker-compose -f docker-kafka.yml up -d 复制代码
当我们遇到服务启动需要先后顺序时,我们可以对docker-compose.yml根据服务的先后顺序进行拆分。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beautiful Code
Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99
In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!