当前位置:   article > 正文

Docker Compose_docker-compose.yaml

docker-compose.yaml

目录

1.简介

传统的容器管理

编排管理容器

docker-compose的三大概念

2.YAML 文件格式及编写注意事项

布尔值类型

文本块

打锚点和引用 

对象object类型类型

一个key有多个值

3.Docker Compose配置常用字段

4.Docker Compose 常用命令

5.Docker-compose搭建nginx

准备依赖环境

准备依赖文件

编写配置文件docker-compose.yml

Docker Compose 文件结构

测试


1.简介

Docker Compose是一个用于定义和运行多容器 Docker 应用程序的工具。它允许用户使用 YAML 文件来定义应用程序的配置,包括容器的数量、容器之间的依赖关系、环境变量、端口映射以及其他设置。然后,用户可以使用 docker-compose 命令来启动和管理这些容器。

使用 Docker Compose 可以方便地管理多个容器,例如,可以同时启动一个 Web 服务器容器和一个数据库容器,并在它们之间建立网络连接。Docker Compose 还支持自定义网络,使得容器可以在不同的网络中进行通信。

Docker Compose 文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个 Web 服务器服务可以包含一个或多个 Web 服务器容器,而这些容器又依赖于一个数据库容器。

传统的容器管理

Dockerfile文件 --> 手动执行 docker build 一个个构建镜像 -> 手动执行 docker run 一个个创建启动容器

编排管理容器

  • Dockerfile文件 --> 在 docker compose 配置文件里定义好容器启动参数和依赖关系 
  •                          -> 执行 docker-compose 命令指定配置文件一次性的自动完成所有镜像的构建和容器的创建启动

总结:

  1. docker-compose 是一个可以实现在单机上对容器集群编排管理的工具。使用python开发的,能运行docker的平台也都能用docker-compose编排管理容器。
  2. 本质就是在yaml格式的docker-compose配置模板文件里定义多个服务容器的启动参数和依赖关系,并使用docker-compose命令根据指定配置模板文件的配置来启动和管理容器集群。.

docker-compose的三大概念

项目project -> 包含一个或多个服务service -> 包含一个或多个容器container的镜像、端口映射、环境变量、依赖关系等启动参数

  1. 默认使用项目的目录名作为project的项目名,支持使用 -p 或 --project-name 来指定项目名称
  2. 项目目录里要包含一个 docker-compose 配置模板文件,默认为 docker-compose.yml,支持使用 -f 或 --file 来指定项目的配置模板文件
  3. 在配置模板文件里要包含一个或多个服务容器的配置,每个服务要包含容器的名称、镜像、映射端口、挂载点、网络模式、依赖关系等容器启动的配置参数

2.YAML 文件格式及编写注意事项

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

使用 YAML 时需要注意下面事项

  • 大小写敏感
  • 通过缩进表示层级关系
  • 不支持制表符 tab 键缩进,只能使用空格缩进
  • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
  • 用 # 号注释
  • 符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 
  • 如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

yaml文件格式:文件名格式通常是以 .yaml .yml 为后缀,用 空格缩进 表示字段的层级关系,特性:可读性高,易于人类管理

json文件格式:文件名格式通常是以 .json 为后缀,用 大括号{} 表示字段的层级关系,每层字段除了最后一个字段都要用逗号,结尾,特性:易于api接口解析

布尔值类型

  1. debug: true #真true,假false,不能用引号引用
  2. debug: false

文本块

  1. value: | # | 代表保留输出文本的换行和回车符,不加的话即使文本换行也会在同一行显示
  2. hello #这种情况就是输出 hello ,不加 | 就是 helloworld!
  3. world! world!
  4. | - #不保留文本块末尾的换行 | + #会保留文本块末尾的换行
  5. value: > hello #将 > 后的字符串和之后的字符串用空格分开,即 hello world!
  6. world!

打锚点和引用 

  1. type: &a string #&是打锚点,后面跟的是锚点名称,&a 代表的就是 string
  2. type: *a #*a 代表引用锚点,此处输出结果就是 type: string
  3. types: #此处就是输出 types:
  4. - int - int
  5. - *a - string
  6. - double - double

对象object类型类型

  1. 一级字段:
  2. 二级字段1: #yaml格式用 空格缩进 表示字段的层级关系,同一层字段要靠左对齐
  3. 二级字段2:
  4. 三级字段:

一个key有多个值

  1. 例如:
  2. 纵向格式:
  3. animal:
  4. - 飞行动物
  5. - 爬行动物
  6. - 水生动物
  7. - 两栖动物
  8. 横向格式
  9. animal: ["飞行动物", "爬行动物", "水生动物", "两栖动物"]

3.Docker Compose配置常用字段

4.Docker Compose 常用命令

5.Docker-compose搭建nginx

准备依赖环境

  1. #下载
  2. curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  3. #安装
  4. chmod +x /usr/local/bin/docker-compose
  5. #查看版本
  6. docker-compose --version

准备依赖文件

  1. mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
  2. cd /opt/compose_nginx/nginx
  3. cp nginx-1.12.0.tar.gz ./
  4. vim run.sh
  5. #!/bin/bash
  6. /usr/local/nginx/sbin/nginx
  7. vim Dockerfile
  8. #基于基础镜像
  9. FROM centos:7
  10. #用户信息
  11. MAINTAINER this is nginx image <yy>
  12. #添加环境包
  13. RUN yum -y update
  14. RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
  15. RUN useradd -M -s /sbin/nologin nginx
  16. #上传nginx软件压缩包,并解压
  17. ADD nginx-1.12.0.tar.gz /usr/local/src/
  18. #指定工作目录
  19. WORKDIR /usr/local/src/nginx-1.12.0
  20. RUN ./configure \
  21. --prefix=/usr/local/nginx \
  22. --user=nginx \
  23. --group=nginx \
  24. --with-http_stub_status_module && make && make install
  25. ENV PATH /usr/local/nginx/sbin:$PATH
  26. #指定http和https端口
  27. EXPOSE 80
  28. EXPOSE 443
  29. //方法一:
  30. RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行
  31. #添加宿主机中run.sh到容器中
  32. ADD run.sh /run.sh
  33. RUN chmod 755 /run.sh
  34. CMD ["/run.sh"]
  35. //方法二:
  36. ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
  37. echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html

编写配置文件docker-compose.yml

  1. vim /opt/compose_nginx/docker-compose.yml
  2. version: '3'
  3. services:
  4. nginx:
  5. container_name: web1
  6. hostname: nginx
  7. build:
  8. context: ./nginx
  9. dockerfile: Dockerfile
  10. ports:
  11. - 1216:80
  12. - 1217:443
  13. networks:
  14. lnmp:
  15. ipv4_address: 172.18.0.10
  16. volumes:
  17. - ./wwwroot:/usr/local/nginx/html
  18. networks:
  19. lnmp:
  20. driver: bridge
  21. ipam:
  22. config:
  23. - subnet: 172.18.0.0/16
  24. cd /opt/compose_nginx/
  25. docker-compose -f docker-compose.yml up -d
  26. ----------------------------------------------------------------------------------------------------------
  27. -f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
  28. -p, --project-name NAME :指定项目名称,默认使用目录名称
  29. -d :在后台运行
  30. ----------------------------------------------------------------------------------------------------------

Docker Compose 文件结构

  1. yum install -y tree
  2. tree /opt/compose_nginx

测试

  1. docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b48dceee248f compose_nginx_nginx "/run.sh" About a minute ago Up About a minute 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1
  4. cd /opt/compose_nginx/
  5. docker-compose ps #必须在docker-compose.yml所在目录执行此命令

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/877082
推荐阅读
相关标签
  

闽ICP备14008679号