一、Docker Compose(容器单独是没有什么意义的,有意义的是容器编排)

1)Compose是一个用于定义和运行多容器Docker应用程序的工具。 使用Compose,您可以使用YAML文件配置应用程序的服务。 然后,使用一个命令,从配置中创建并启动所有服务。

三步:

  1.Dockerfile保证项目可以在任何地方运行

  2.docker-compose.yml

      -services服务

      -docker-comse.yml怎么写

  3.docker-compose up 启动项目

作用:批量容器编排

 

2)Compose是Docker官方的开源项目,需要安装

   Dockerfile让程序在任何地方运行。 

 

  Compose实例:

 

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: {}

   

  service服务:容器/应用(redis、mysql....)

  项目project:一组关联的服务。如博客(web、mysql)

  

3)安装Compose

  1.下载

     sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

国内地址: curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

  2.授权

   sudo chmod +x /usr/local/bin/docker-compose

  3.查看版本

   docker-compose  version,安装成功

   

docker compose volumes docker compose volumes作用_docker

官方demo测试:https://docs.docker.com/compose/gettingstarted/

  1.创建一个文件夹

  cd /home , mkdir composetest

  2.创建一个文件app.py拷贝官方的应用  

  

docker compose volumes docker compose volumes作用_redis_02

 

 

         编辑另外一个文件

  

docker compose volumes docker compose volumes作用_Dockerfile_03

 

 

   3.创建Dockerfile文件

  

docker compose volumes docker compose volumes作用_Dockerfile_04

 

 

   4.创建dock-compose.yml文件

  

docker compose volumes docker compose volumes作用_Dockerfile_05

 

 

   5.docker-compose up,提示让docker-compose up --build

  

docker compose volumes docker compose volumes作用_redis_06

 

 

   docker-compose up --build,再次build并运行

  

docker compose volumes docker compose volumes作用_docker_07

 

 

   访问成功

  

docker compose volumes docker compose volumes作用_redis_08

 

  使用docker service ls查看

  

docker compose volumes docker compose volumes作用_docker_09

 

 

 

 

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

 当docker集群时,num为服务的副本编号    

docker compose volumes docker compose volumes作用_docker_10

 

 

** 网络规则

 使用docker network ls发现创建了一个网络

 

docker compose volumes docker compose volumes作用_redis_11

 

 

 项目中的所有服务都在同一个网络下面,可以通过域名访问

 如:mysql:3306(10个mysql都是通过域名访问)

  查看网络信息 docker network inspect composetest_default 

 

docker compose volumes docker compose volumes作用_Dockerfile_12

 

 

   刚才官方的demo中可以看到

  

docker compose volumes docker compose volumes作用_redis_13

  6.停止:

    ctrl+c

    docker-compose down

 启动和停止都必须在文件目录下才能使用     

**结论:之前是docker run单个启动容器或者停止

  编写docker-compose.yml docker-compose up 一键批量启动服务

 

总结:1.docker镜像   run=》容器

   2.Dockerfile构建镜像(服务打包成镜像)

      3.docker-compose.yml 启动项目(编排多个微服务/ 环境)

   4.docker网络           

 二、yaml文件编写规则

  #总共三层

  #第一层 版本 version:(docker引擎和yaml版本向下兼容)

  #第二层 服务 service:

         #服务配置

           images

           build

           network

  #第三层 其他配置 网络/卷/全局配置

        networks

        volumes

        configs     

      

 

 

  

docker compose volumes docker compose volumes作用_docker_14

 

 

   depends_on: 启动顺序  先启动db,redis,再启动web

  

 三、Compose一键部署WP博客

  https://docs.docker.com/samples/wordpress/

  步骤:

    -创建一个文件夹,然后创建一个docker-compose.yml拷贝

      docker-compose up 前台启动

      docker-compose up -d 后台运行

     

  

docker compose volumes docker compose volumes作用_docker_15

 

 

  下载开源项目:  

  1.下载开源项目(带有docker-compose.yml)

  2.如果需要文件-Dockerfile构建镜像(这个博客是去拉的仓库镜像)

  3.文件准备好之后一键启动

 

 四、编写自己的项目上线

  1.编写springboot项目打成jar包

  2.编写dockerfile构建镜像

  3.docker-compose.yml 编排项目

  3.放到服务器上docker-compose up

总结:工程compose:三层

    工程project

    服务service

    容器运行实例

 五、docker Swarm(略)

  1.购买多台阿里云服务器安装docker

  2.swarm集群搭建

  3.Raft一致性协议

  4.swarm集群弹性创建服务