docker-compose单机容器集群编排

DockerCompose是一个用于多容器应用编排的工具,它通过yaml文件(docker-compose.yml)定义和运行多个容器。yaml文件描述了服务、容器的配置,包括镜像、环境变量、网络、卷等。DockerCompose的三层结构包括工程、服务和容器。在版本3中,可以使用命名卷实现跨容器的卷挂载。此外,文章还提到了容器的网络隔离和重启策略等配置选项。
摘要由CSDN通过智能技术生成

docker-compose

dockerfile模板文件可以定义一个独立的应用容器,如果需要多个容器就需要服务编排。服务编排有很多技术方案

 docker-compose开源的项目实现对容器集群的快速编排

docker-compose将所管理的容器分为三层,分别为工程,服务,以及容器。docker-compose运行目录下的所有文件(docker-pompos.yum,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为每个当前目录名。一个共工程当中包含多个服务,每个服务中定义了容器的运行的镜像,参数,依赖、当一个服务中包括多个容器实例,docker-compose的工程默认配置文件默认为docker-compose.yml ,可以通过环境变量compose_file或-f自定义配置文件其定义了多个服务和容器

yaml文件格式及编写注意事项 

yaml是一个标记语言,他可以很直观的展示数据序列化格式,可读性高。类似于json数据描述语言,语法比json简单的多。yaml数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组中括号[]括起来,hash用花括号{}括起来

使用yaml时需要注意

大小写敏感

通过缩进表示层级关系

不支持tab键缩进,只能使用空格缩进

缩进的空格数目不重要,但是相同层级左对齐

#注释

符号字符后缩进1个空格如冒号:逗号, 横杠- 

如果包含特殊字符用(' ')引起来会作为普通字符串处理,双引号(“ ”);特殊字符做为本身想表示的意思name: "Hi,\nTom"

数据结构

对象映射:键值对的字典

animal:pets

序列数组:一组按次序排列的列表

pets:

- Cat

- Dog

- Goldfish

pets: ["Cat","Dog","Goldfish"]

布尔值

debug:true

debug:false

示例

# yaml 格式

true和false系统默认是布尔型

json格式及docker生产经验

| 保留文本中的换行

3。 Docker Compose配置常用字段字段

字段- - -描述

build   指定Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定

dockerfile  构建镜像上下文路径

context  可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址

image  指定镜像

command 执行命令,覆盖容器启动后默认执行的命令

container_name  指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量

deploy  指定部署和运行服务相关配置,只能在 Swarm 模式使用

environment  添加环境变量

networks  加入网终,引用顶级networks下条目

network_mode  设置容器的网络模式,如 host,bridge,..

ports  暴露容器端口,与 -p 相同,但端口不能低于 60

volumes  挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称

volumes_from  从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本‘2’ 支持

hostname  容器主机名

sysctls  在容器内设置内核参数

links  连接到另外一个容器,- 服务名称[:服务别名]

privileged  用来给容器root权限,注意是不安全的,true | false

restart  设置重启策略,no,always, on-failure, unless-stopped

no,默认策略,在容器退出时不重启突器。

always,在容器退出时总是重启究器。

on-failure,在容器非正常退出时 (退出状态非0),才会重启容器

on-failure:3,在容器非正常退出时重启突器,

最多重启3次。

unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器

 

 volumes_from  从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本‘2’ 支持如果在版本3中也想实现从另一个服务或容器挂载卷可以

创建一个顶级的命名卷volumes:

db-data:

以命名卷为通道完成两个逻辑卷通信

networks:定义不同的网络域

不同网络域不能通信

 docker compose ps查看用户名 创建时不要docker-compose -f docker-compose.yml -p -d 无-p项目名做名字 -p指定否则查找docker compose ps查找时也要指定

docker logs nginx-compose查看

docker-compose

command:镜像后面的启动命令

两个容器互相从另一个服务挂载

或者直接挂载宿主机的 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值