zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/lakeslove/p/11018227.html
Copyright © 2011-2022 走看看