云原生(七) | Docker 篇之深入 Docker Compose
深入 Docker Compose
一、Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
二、yaml 语法
如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。
docker-compose.yml 的配置案例如下(配置参数参考下文):
以上 JSON 转为 Yaml 为
# 这是 yaml 注释 # key: value 基本键值对写法; yaml 使用缩进控制层次。 name: bigdataurl: 'http://www.lansonli.com'page: 88address: street: 科兴科技园 city: 深圳市南山区 country: 中国 links: - name: Google url: 'http://www.google.com' - name: Baidu url:
'http://www.baidu.com'
三、compose 安装
安装 Docker Compose 可以通过下面命令自动下载适应版本的 Compose,并为安装脚本添加执行权限
查看安装是否成功
四、compose 常见命令
ps:列出所有运行容器
logs:查看服务日志输出
port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
build:构建或者重新构建服务
start:启动指定服务已存在的容器
stop:停止已运行的服务的容器
rm:删除指定服务的容器
up:构建、启动容器
kill:通过发送 SIGKILL 信号来停止指定服务的容器
pull:下载服务镜像
scale:设置指定服务运气容器的个数,以 service=num 形式指定
run:在一个服务上执行一个命令
五、 docker-compose.yml 属性
version:指定 docker-compose.yml 文件的写法格式
services:多个容器集合
build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
command:覆盖容器启动后默认执行的命令
dns:配置 dns 服务器,可以是一个值或列表
dns_search:配置 DNS 搜索域,可以是一个值或列表
environment:环境变量配置,可以用数组或字典两种方式
env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量
expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机
image:指定服务所使用的镜像
network_mode:设置网络模式
ports:对外暴露的端口定义,和 expose 对应
links:将指定容器连接到当前连接,可以设置别名,避免 ip 方式导致的容器重启动态改变的无法连接情况
volumes:卷挂载路径
logs:日志输出信息
六、compose 示例
1、建立一个 hello world 简单测试案例
创建 app.py
编写 compose 文件[compose.yaml] compose 文件名 docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml
使用命令进行后台执行
2、 加上数据卷的 yaml 配置文件
七、扩展说明 docker swarm
两句总结:
docker swarm init (创建一个 master 节点)
控制台打印
docker swarm join --token SWMTKN-1-1i0biktih9tfn7mrj6asn27em4vydg8pp00u930nrycpgct1ww-7ecs32nl5f5y8qx6e5lp4f064 10.120.82.4:2377
其他和本机(master)能互通的机器 把上面的命令运行,加入集群
docker swarm join --token SWMTKN-1-1i0biktih9tfn7mrj6asn27em4vydg8pp00u930nrycpgct1ww-7ecs32nl5f5y8qx6e5lp4f064 10.120.82.4:2377 思考:k8s 怎么解决: helm 把整个应用的部署打成应用包,helm install mysql(主从)
八、整个原理流程图
版权声明: 本文为 InfoQ 作者【Lansonli】的原创文章。
原文链接:【http://xie.infoq.cn/article/9ca51437300a12cee63815b0f】。文章转载请联系作者。
评论