Docker Compose(用户在集群中部署分布式应用)

Docker Compose是一种编排服务,基于pyhton语言实现,
是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户集群中部署分布式应用。

用户可以很容易地用一个配置文件定义一个多容器的应用,
然后使用一条指令安装这个应用的所有依赖,完成构建。
解决了容器与容器之间如何管理编排的问题。

Docker Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

可以类比之前的ansible及saltstack,都是为了更方便集群式的部署分布式应用

Docker Compose 常用命令

Build构建或重新构建服务
kill强制停止服务容器。
logs查看服务的输出。
port打印绑定的公共端口。
ps列出所有容器。
pull:拉取服务所需镜像。
rm:删除停止的服务容器。
up:构建并启动容器。

Docker Compose实践(创建容器haproxy,nginx)

1. docker compose安装

将脚本下载,阿里云的下载速度较快,推荐适用
https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/
把脚本放在/usr/local/bin/下.名字为docker-compose ,加执行权限 ,docker-compose命令就有了

在这里插入图片描述

在这里插入图片描述

2.docker-compose.yml

docker-compose.yml 属性

Image指定为镜像名称或镜像 ID,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
Build:指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
Command:覆盖容器启动后默认执行的命令。
Links:链接到其它服务中的容器。
Ports:端口映射。
Expose::暴露端口信息
Volumes:卷挂载路径设置

更多属性查阅
https://docs.docker.com/compose/compose-file/

在这里插入图片描述
文件名默认是docker-compose.yml 如果名字不是默认,则加-f参数,指定文件
docker network create mynet

创建docker-compose.yml文件:
在这里插入图片描述

version: "3.9"
services:
  web1:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web1:/usr/share/nginx/html       ####/usr/share/nginx/html : nginx的测试页 ,

  web2:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web2:/usr/share/nginx/html

  haproxy:
    image: haproxy
    networks:
      - mynet
    ports:
      - "80:80"
    volumes:
      - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

networks:
  mynet:

在主机中下载haproxy ,nginx镜像
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.运行docker-compose:

docker-compose命令必须在项目下运行

docker-compose up 创建并启动容器

在这里插入图片描述
在这里插入图片描述

GitHub 加速计划 / compose / compose
33.27 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
501b5acd Add `jhrotko` to Core Maintainers. Signed-off-by: Laura Brehm <laurabrehm@hey.com> 9 天前
f51bc4cd Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐