看了《微服务那些事》之后,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:
VOLUME /tmp
ADD build/libs/discovery-0.0.-SNAPSHOT.jar /app.jar
#修改文件的时间属性为当前系统时间
RUN bash -c 'touch /app.jar'
EXPOSE
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。

springcloud与docker微服务架构实战--笔记的更多相关文章

  1. SpringCloud与Docker微服务架构实战笔记

    一  微服务架构概述 1. 单体应用架构存在的问题 结合:https://www.cnblogs.com/jialanshun/p/10637454.html一起看,在该篇博客中搜索“单块架构的优缺点 ...

  2. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  3. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  4. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  5. Spring Cloud 微服务架构学习笔记与示例

    本文示例基于Spring Boot 1.5.x实现,如对Spring Boot不熟悉,可以先学习我的这一篇:<Spring Boot 1.5.x 基础学习示例>.关于微服务基本概念不了解的 ...

  6. Spring Cloud与Docker——微服务架构概述

    Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...

  7. 一. SpringCloud简介与微服务架构

    1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...

  8. Dubbo学习系列之六(微服务架构实战)

    看了最近文章的反馈,似乎波澜不惊的样子,应该是看官觉得都是小菜,那我就直上硬菜,人狠话不多,开始!准备:Idea201902/JDK11/ZK3.5.5/Gradle5.4.1/RabbitMQ3.7 ...

  9. SpringCloud (一) :微服务架构

    什么是微服务架构 简而言之,微服务架构风格就是将单一应用的开发分为多个小的服务,每个小的服务在自己的进程中运行并使用轻量级机制进行通信(通常是一个HTTP API源),这些服务围绕业务性能进行构建,并 ...

随机推荐

  1. HDU 2036 改革春风吹满地【计算几何/叉乘求多边形面积】

    改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  2. redis入门与集群部署

    redis入门 redis入门级教程非常多,如http://www.runoob.com/redis/redis-backup.html,作为入门其实已经十分详细了,主要学习内容有如下几个方面吧 1. ...

  3. Interview | Why are manhole covers round and not square or rectangular?

    Manholes, which interconnect underground sewerage pipes, and serve as a point of entry for cleaning ...

  4. ActiveMQ 翻译第一章 1.2小节(松耦合与ActiveMQ和何时使用ActiveMQ)

    第一章 1.2.1小节  松耦合与ActiveMQ ActiveMQ为应用程序架构提供送耦合实现组件.松耦合经常被引入到系统架构中,来减轻紧耦合的远程工程调用的使用.松耦合的设计是异步的,来自其他系统 ...

  5. luogu P1880 石子合并

    题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...

  6. [转] 使用SVN进行源码管理

    原文地址:gyzhao's, 使用SVN进行源码管理(下) 软件下载 1. Viusal SVN, Download(官网),安装该软件之前,请先安装TortoiseSVN,Download. 2. ...

  7. Android 获取虚拟按键的高度

    //获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBa ...

  8. linux下ftp、telnet的安装和使用

    1.ftp的安装和使用 一般在各种linux的发行版中,默认带有的ftp软件是vsftp. 使用如下命令#rpm -qa | grep vsftpd可以检测出是否安装了vsftpd软件,如果没有安装, ...

  9. 计算机图形学OpenGL中的glLoadIdentity、glTranslatef、glRotatef原理,用法 .(转)

    单位矩阵 对角线上都是1,其余元素皆为0的矩阵. 在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,我们称这种矩阵为单位矩阵. 它是个方阵,除左上角到右下角的对角线(称为主对角线)上的元素 ...

  10. c 数组做为形參时 该參数退化为指针

    当数组做为函数的形參的时候,该參数退化为指针,而且是无法直接求得数组的大小. 传数组给一个函数.数组类型自己主动转换为指针类型,因而传的实际是地址. void func(int array[10]) ...