容器编排技术 docker compose 20210816 - cn2021 - D1h.Net第一号博客
Dict.CN 在线词典, 英语学习, 在线翻译 ------------- MyGitee

Happy_EveryDay

可以平凡 不可以平庸 无爱则无忧,无欲则无求,无怒而无敌,无怨才是佛。所有烦恼,都是放不下的执著 开源技群 328035181 MyGitee

导航

容器编排技术 docker compose 20210816

################################################

 

1.容器编排docker compose 为啥用??

 

1)、springboot项目

需要依赖redis、mysql5.7、nginx。
如果使用docker原生部署的话,则需要安装redis、mysql5、nigix容器,在才可以
springboot项目,这样的话部署项目的流程非常复杂
所以需要引入我们docker compose 实现容器编排技术

 

 


i)、局域网容器

mysql容器、redis容器、nginx容器、es容器

springboot项目容器
kafka zk
nacos

 

注:docker最终解决了运行环境配置中的问题。------镜像文件低层封装好了

 

 

 

ii)、容器编排

mysql容器
redis容器
nginx容器
es容器
springboot项目容器

 

 

 

 

 

 

 

 

 

2.原理 

######docker compose:容器集群的快速编排

 

开发一个springboot项目---大工程
1、依赖mysql
2、依赖redis
3、依赖ZK
需要在:docker-compose.yml配置项目工程依赖环境配置

 

 

 

  i)、3层: 工程project
        服务service
        容器contain


  ii)、工程文件:docker-compose.yml
          extends文件
          环境变量文件 COMPOSE_FILE或-f参数自定义配置文件
          定义了多个有依赖关系服务及每个服务运行


  iii)、工程 :多个服务服务:n个容器运行镜像、参数、依赖)


  iiii)、负载均衡:借其他工具(服务发现及负载均衡)

 

 

 

 

 

 

 

 

 

 

 

2)、compose 重要概念

  i)、服务(service):一个应用的容器,实际可以包括若干运行相同镜像的容器实例

  ii)、项目(project):一组关联的应用容器组成一个完整业务单元,
          在docker-compose.yml文件中定义

    项目可以由多个服务(容器)关联而成,compose面向项目进行管理,通过子命令
         对项目中的一组容器进行便捷地生命周期管理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

           iii)、调用docker服务提供的API来对容器进行管理(docker api)


    docker-compse 分3层
      a)、项目层 springboot项目依赖于我们的mysql、redis、nginx
      一个项目由多个容器组成
      b)、服务层 运行一个镜像的实例

 

     

 

 

 

 

    c)、docker-compose编排容器

      mysql容器 redis容器 nginx容器 es容器
          springboot项目容器

            .....................docker-compose.yml.....................................

              

                    注:独立IP信息

                    

 

 

 

 

 

 

 

 

3.安装 

 

 

 

  1)、访问docker compose github官网
        https://github.com/docker/compose/releases

  2)、docker-compose-Linux-x86_64

    下载 https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64

 

 

 

 

 

 

  docker-compose-Linux-x86_64上传到宿主机

 

 

 

 

 

 

 

  然后执行如下命令将其
  /usr/local/bin目录中, 并且更名为docker-compose如下

  mv docker-compose-Linux-x86_64     /usr/local/bin/docker-compose

 

 

 

 

  3)、执行如下命令
    ##添加可执行权限
    chmod +x  /usr/local/bin/docker-compose

 

 

  4)、验证docker-compose
    docker-compose -v

 

 

 

 

 

 

 

 

 

 

 

4.docker-compose入门实例 

docker-compose入门实例

         

 

 

       1)、需要定义一个docker-compose.yml文件-----工程


    

 

 

 

 

    2)、需要在docker-compose 文件配置依赖服务

                   docker-compose.yml内容如


version: "3.0" #定义compose 版本号
services: ##服务,每个服务实际上就是一个独立容器运行
  tomcat8080: ##服务名称
  image: tomcat:8 #依赖镜像文件名称 tomcat:8
  ports:
    - 8080:8080
  tomcat8081: ##服务名称
  image: tomcat:8 #依赖镜像文件名称 tomcat:8
  ports:
    - 8081:8080

 

 

 

 

 

 

 

 

 

    3)、/usr 目录下创建文件夹mayikt007
      #mkdir mayikt007
      本地idea项目中docker-compose.yml文件上传到/usr/mayikt007

 

 

 

 

 

 


    4)、docker-compose执行该文件

 

    ##/usr/mayikt007/docker-compose.yml
    目录下 执行 docker-compose up

 

            

 

 

 

 

 

    docker ps   查看已创建的容器

 

 

 

 

 

 

 

 

5)、浏览部署的tomcat

      ###mayikt项目没文件显示为404.html

  http://192.168.223.133:8080/mayikt/index.html
  http://192.168.223.133:8081/mayikt/index.htnl

       

 

 

 

 

 

 

  6)、docker-compose.yml
    ##数据卷 宿主机与容器数据共享 -v
    ####volumes: ##数据源 宿主机与容器数据共享 -v  

    /usr/tomcat/webapps:/usr/local/tomcat/webapps

 

    #mkdir  tomcat  

    #mkdir tomcat
    #cd tomcat
    #mkdir webapps   如下图

    #mkdir mayikt 

 

 

 

 

 

 

 


  ####docker-compose.yml###内容如下

 

 

 

  version: "3.0" #定义compose 版本号
  services: ##服务,每个服务实际上就是一个独立容器运行
  tomcat8080: ##服务名称

               ##container_name: mayikt007_tomcat8080_1 ##容器名称
    image: tomcat:8 #依赖镜像文件名称 tomcat:8
    ports:
      - 8080:8080
    volumes: ##数据源 宿主机与容器数据共享 -v
      - /usr/tomat/webapps:/usr/local/tomat/webapps


  tomcat8081: ##服务名称

               ##container_name: mayikt007_tomcat8080_1 ##容器名称
    image: tomcat:8 #依赖镜像文件名称 tomcat:8
    ports:
    - 8081:8080
    volumes: ##数据源 宿主机与容器数据共享 -v
      - /usr/tomat/webapps:/usr/local/tomat/webapps

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     docker-compose.ym重新上传,再 docker-compose up

 

 

 

 

 

 

 

 

 

 

 

容器本地访问 mayikt007_tomcat8080_1如下

 

 

宿机访问如下

 

 

外网浏览访问如下

 

 

 

 

6)、多容器启动
  #####容器与宿主机映射的对应的宿主端口不能相同如下:
  #####宿主机端口:8080###################
  ports:
    - 8080:8080
  ports:
    - 8080:8081

 

7)、多容器在同一局域网
 ########8080,8081容器可以相互访问######


 

 

   ######docker inspect 容器ID#########

   

 

 

 

 

 

##############定位服务的桥####
####networks: ###定位服务的桥
####mayikt_web ##############

 

####docker-compose.yml###内容如下

version: "3.0" #定义compose 版本号
services: ##服务,每个服务实际上就是一个独立容器运行
  tomcat8080: ##服务名称
  ##container_name: mayikt007_tomcat8080_1 ##容器名称
  image: tomcat:8 #依赖镜像文件名称 tomcat:8
  ports:
    - 8080:8080
  volumes: ##数据源 宿主机与容器数据共享 -v
    - /usr/tomcat/webapps:/usr/local/tomcat/webapps
  networks: ###定位服务的桥
    - mayikt_web

  tomcat8081: ##服务名称
  ##container_name: mayikt007_tomcat8080_1 ##容器名称
  image: tomcat:8 #依赖镜像文件名称 tomcat:8
  ports:
    - 8081:8080
  volumes: ##数据源 宿主机与容器数据共享 -v
    - /usr/tomcat/webapps:/usr/local/tomcat/webapps
  networks: ###定位服务的桥
    - mayikt_web

networks: ###定位服务的桥
mayikt_web:

 

 

 

 


docker-compose.ym重新上传,再 docker-compose up

 

 

 

 

 

 

 

 


  

 

 

 

 

 

 

 

 ########8080,8081容器可以相互访问######

 

posted on 2021-08-02 00:13  cn2021  阅读(8)  评论(0编辑  收藏  举报

刷新评论刷新页面返回顶部

Powered by:
D1h.Net第一号博客
Copyright © 2021 cn2021
Powered by .NET 6 on Kubernetes


问答 28u iTmz.Net 3q科技 A8团队1 A8团队2 A8团队3 A8备