• springcloud与docker微服务架构实战--笔记


    看了《微服务那些事》之后,Spring boot和Spring Cloud的关系理清楚了,Spring cloud各个模块的作用也了解了。

    但是,Spring cloud 与Docker的关系,Spring boot 与 Docker的关系,Spring cloud 的详细使用,还是不了解。

    《springcloud与docker微服务架构实战》这本书,一共270页,虽然介绍的不会太深入,不过,对于入门来说是很好的书,毕竟太厚的书不适合入门用。

    这本书一共14章

    第一章、微服务架构概述

    第二章、Spring cloud 简介

    第三章、开始使用Spring cloud

    第四章、微服务注册与发现 Eureka

    第五章、Ribbon实现客户端负载均衡

    第六章、Feign实现REST调用

    第七章、Hystrix实现容错处理

    第八章、使用Zuul构建微服务网关

    第九章、使用Spring Cloud Config 统一管理微服务的配置

    第十章、Sleuth 实现微服务跟踪

    第11章、常见问题与总结

    第12章、Docker

    第13章、将微服务运行在Docker上

    第14章、用Docker Compose编排微服务

    第一章到第11章已经大体了解了,因此略看。

    重点看12、13、14章,弄明白springboot、SpringCloud、Docker、Docker Compose之间的关系

    第12章、Docker简介

    Client、Images、Container、Registry、Docker Hub

    介绍了Docker的基本命令,由于我已经学了docker基础,所以这部分就不再记录。

    第13章、将微服务运行在Docker上

    构建一个Dockerfile文件。

    执行docker build命令,示例如下:

    docker build -t nginx:my.

    Dockerfile的常用指令

    ADD

    ARG

    ENV

    CMD

    EXPOSE

    FROM

    LABEL

    MAINTAINER

    RUN

    USER

    VOLUME

    WORKDIR

    使用方式

    使用gradle打包项目

    项目根目录下建立文件Dockerfile,内容如下:

    FROM java:8
    VOLUME /tmp
    ADD build/libs/discovery-0.0.1-SNAPSHOT.jar /app.jar
    #修改文件的时间属性为当前系统时间
    RUN bash -c 'touch /app.jar'
    EXPOSE 8761
    ENTRYPOINT java -jar /app.jar

    docker build -t lakeslove/springcloud-blog-discovery:0.01 .

    docker run -it -d -p 8761:8761 lakeslove/springcloud-blog-discovery:0.01

    访问 locahost:8761

    推送到dockerhub

    docker login

    docker push lakeslove/springcloud-blog-discovery:0.01

    插件的使用:docker-maven-plugin、gradle-docker-plugin等,插件挺多的,不过我们项目里没用这类插件,直接在jenkins脚本里写的,这块暂时不研究。

    第14章、使用DockerCompose 编排微服务

    Compose是一个用于定义和运行多容器Docker应用程序的工具,非常适合在开发、测试、构建CI工作流等场景。

    使用Compose大致有3步:

    使用Dockerfile定义应用程序环境,以便在任何地方重现该环境

    在docker-compose.yml文件中定义组成应用程序的服务,以便各个服务在一个隔离的环境中一起运行。

    运行doker-compose up命令,启动并运行整个应用程序

    docker-compose.yml常用命令

    通过 .env 文件来为 docker-compose.yml 文件引用的所有环境变量设置默认值,详细参考 https://www.cnblogs.com/sparkdev/p/9826520.html

    示例如下:

    version: "3.3"
    services:
      eureka:
        build: .
        ports:
          - "8761:8761"
      volumes:
        - /opt/data:/var/lib/mysql

    build 构建,后面跟Dockerfile路径

    ports 功能类似于 docker run -p

    volumes 卷挂载路径设置,通常作为路径映射(host:container)

    volumes_from 从另一个服务或容器挂载卷,可指定只读ro,读写rw,默认是读写rw

    docker-compose常用命令

    build 构建或重新构建服务。

    kill 停止指定服务的容器,例如:docker-compose kill eureka

    logs 查看服务的日志输出 

    port 打印绑定的公共端口,例如:docker-compose port eureka 8761,这样就可以输出eureka服务8761端口绑定的公共端口

    ps 列出所有容器,例如:docker-compose ps

    pull 下载服务镜像

    rm 删除指定服务的容器,例如:docker-compose rm eureka

    run 在一个服务上执行一个命令,例如:docker-compose run web bash

    scale 设置指定服务运行容器的个数,以 service=num的形式指定,实例:docker-compose scale user=3 movie=3

    start 启动指定服务已存在的容器,例如:docker-compose start eureka

    stop 停止已运行的容器,例如:docker-compose stop eureka

    up 构建、创建、重新创建、启动、连接服务的相关容器,所有连接的服务都会启动,除非它们已经运行。

    docker-compose up 命令会聚合所有容器的输出,当命令退出时,所有容器都会停止,后台运行 docker-compose up -d

    docker-compse的网络设置

    默认情况下,Compose 会为应用创建一个网络,服务的每个容器都会加入该网络中,这样,容器就可以被该网络中的其他容器访问,不仅如此,该容器还能已服务名作为hostname被其他容器访问。

    默认情况下,应用程序的网络名称基于Compose的工程名称,而工程名称基于docker-compose.yml所在目录的名称,

    如需修改工程名称,可使用--project-name标识或COMPOSE_PROJECT_NAME环境变量

    默认的是bridge网络架构

    Docker Compose,Docker Swarm,Kubernetes之间的区别:

    Docker Compose是一个基于Docker的单主机容器编排工具,不能去启动其他主机上的Docker容器

    Docker Swarm和Kubernetes是基于Dcoker的跨主机的容器管理平台,

    Docker Swarm则是由Docker 公司研发的,在与Kubernetes竞争中已经失势,不必学习了。

    所以,简单了解一下Docker Compose,深入研究Kubernetes

  • 相关阅读:
    Xcode11 Developer Tool中没了Application Loader
    iOS
    iOS
    UIView与CALayer的区别,很详细(基础教学拓展)转
    使pre的内容自动换行(转)小知识
    requirejs:模块加载(require)及定义(define)时的路径理解
    JS国际化网站中英文切换(理论支持所有语言)应用于h5版APP
    Tomcat8 配置APR模式
    Mongodb安装
    SecureCRT配色方案
  • 原文地址:https://www.cnblogs.com/lakeslove/p/11018227.html
Copyright © 2020-2023  润新知