Docker Compose

简介

docker
Dockerfile bulid run 手动操作,单个容器!
当微面临微服务时;比如有100个微服务项目,并且相互之间有依赖关系。
Docker Compose 来轻松高效的管理容器。定义运行多个容器。

官方介绍

docker compose 启动时输出日志 docker compose log_运维


作用:批量容器编排。

官网点我

使用三部曲:

  • Dokcerfile定义你的项目,这样它就可以在任何地方复制。
  • docker-compos.yml中定义组成项目的各个微服务。
  • 启动项目docker compose up

我自己的理解

compose是docker官方的开源项目。需要安装!
dockerfile让程序在任何地方运行。
docker-compos.yml示例

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose up 100个服务
compose:重要的概念
服务services:容器 应用 (web、redis、mysql…)
项目project:一组关联的容器。博客。web 、mysql 、wp

安装

官方文档

docker compose 启动时输出日志 docker compose log_ci/cd_02

#官方下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#授权
chmod +x /usr/local/bin/docker-compose

# 加速下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#授权
chmod +x /usr/local/bin/docker-compose

1 下载

docker compose 启动时输出日志 docker compose log_运维_03


2 授权

docker compose 启动时输出日志 docker compose log_容器_04

快速开始 体验

跟着官网做 python应用,计数器 redis

总结:

1、应用app.py

2、Dockerfile应用打包为镜像

3、docker-compose yaml文件(定义整个服务,需要的环境。web、redis)完整的上线服务

4、启动compose项目(docker-compose up)

流程:

1、创建网络

2、执行docker-compose yaml

3、启动服务

docker-compose yaml

creating composetest_web_1 …done

creating composetest_redis_1 …done

docker compose 启动时输出日志 docker compose log_运维_05


docker compose 启动时输出日志 docker compose log_docker_06


docker images

docker compose 启动时输出日志 docker compose log_ci/cd_07


docker compose 启动时输出日志 docker compose log_运维_08


默认的服务名 文件名_服务名_num

多个服务器。集群。 A B _num 副本数量

服务redis服务=>4个副本。

集群状态。服务都不可能只有一个运行示例。弹性、 10 HA 高并发。

kubectl service 负载均衡。

docker compose 启动时输出日志 docker compose log_docker_09

网络规则

docker compose 启动时输出日志 docker compose log_mysql_10


10个服务 = > 项目(项目中的内容都在同网络下。域名访问)

docker compose 启动时输出日志 docker compose log_mysql_11


如果在同一个网络下,我们可以直接同域名访问

HA停止:docker-compose down ctrl+c

docker compose 启动时输出日志 docker compose log_运维_12


docker-compose

以前都是单个docker run 启动容器。

docker-compose。通过docker-compose编写yaml配置文件、可以通过compose一键启动所有服务,停止。

docker小结

  • docker镜像。run ->容器
  • dockerfile 构建镜像(服务打包)
  • docker-compose 启动项目(编排、多个微服务、环境)
  • docker网络

yaml规则

三层

version: ""  # 版本
services:  # 服务
  web:  #服务1 
  	#配置服务
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:  #服务2 redis
    image: redis
  #服务3:...
#其他配置 网络、卷、 全局规则  
volumes:
  logvolume01: {}

依赖
在描述多个相互有依赖的项目时:

  • docker-compose up 启动服务要按照依赖顺序执行,列如:在启动web项目之前需要先启动db和redis
  • docker-compose up SERVICE自动包含服务依赖。比如创建 docker-compose up web同时也启动了db和redis
  • docker-compose up stop 停止服务也是按照依赖顺序执行,列如,先停止web在停止db和redis

docker compose 启动时输出日志 docker compose log_mysql_13


学习要掌握规律

只要多写,多看compose.yaml配置!

开源项目 博客

下载程序、安装数据库、配置…
compose 应用。 =>一键启动!
项目地址:https://docs.docker.com/compose/wordpress/

  • 下载项目
  • 如果需要文件Dockerfile
  • 文件准备齐全(直接一键启动项目)

前台启动

docker -d

dcoker-compose up -d

docker compose 启动时输出日志 docker compose log_ci/cd_14


实战

  • 编写项目微服务
  • dockerfile
  • docker-compose.yaml编排项目
  • 上传服务器 docker-compose up

小结
未来项目只要有docker-compose 文件。按照这个规则,启动编排容器!
公司项目:docker-compose 直接启动
网上开源项目: docker-compose一键搞定
假如项目需要重新部署打包

docker-compose up --build #重新构建!

总结:
工程 服务 容器
项目compose: 三层
工程project
服务…
容器运行实例! docker k8s 容器
docker compose搞定

Docker Swarm

购买服务器

4台服务器安装docker

docker compose 启动时输出日志 docker compose log_容器_15


工作模式

docker compose 启动时输出日志 docker compose log_ci/cd_16


搭建集群

未完待续…