Docker仓库
写在前面Docker三个核心概念已经详细学习了前两个,接下来学习第三个概念—仓库(Repository)。仓库是集中存放镜像的地方,它分为公共仓库和私有仓库。注意仓库(Repository)和注册服务器(Registry)两者是不同的,实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,每个仓库下面有多个镜像,因此你完全可以将仓库理解为是注册服务器上的一个具体的项目或目录。举个例子,对于地址为private-docker.com/ubuntu的仓库来说,前面的private-docker.com是注册服务器地址;后者的ubuntu是仓库名称。通过上面的简单介绍,相信开发者已经对仓库和注册服务器有了基本的认识。在本文中将介绍如何使用Docker Hub官方仓库进行登录、下载、上传等操作,如何使用国内社区提供的仓库来下载镜像,创建和使用私有仓库的相关操作。
Docker Hub官方仓库Docker Hub是Docker官方提供的最大公共镜像仓库。一般来说,开发者需要的镜像都可以在Docker Hub官方仓库上找得到并直接下载。
登录开发者可以执行docker login ...
操作Docker容器
写在前面在前面我们学习了docker镜像相关的知识,接下来再来学习另一个核心概念—容器。容器是镜像的一个运行实例,所不同的是,镜像是静态的只读文件,而容器则是带有运行时需要的可写文件层,同时容器中的应用进程处于运行状态。
可以将其类比到面向对象编程中的对象和类的关系,其中类实例化出对象,正如这里的容器是镜像的一个运行实例一般。
如果认为虚拟机是模拟运行的一整套操作系统,包括内核、应用运行环境、其他系统环境以及跑在上面的应用;那么Docker容器就是独立运行的一个或者一组运用,以及它们必需的运行环境。
接下将围绕容器来进行学习,主要包含创建、启动、终止、删除容器,进入容器内执行操作、通过导入导出操作实现容器迁移等内容。
创建容器用户可以理解为对容器的操作就像直接操作应用一般,非常简单且快速。
新建容器开发者可以使用docker create [container]命令来新建一个容器。
举个例子,开发者可以使用ubuntu:latest镜像创建一个容器,使用的命令如下:
12345[root@envythink ~]# docker create -it ubuntu:latestdffc ...
使用Docker镜像
写在前面镜像是Docker三大核心概念中最重要的一部分,而Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试从默认的镜像仓库中下载(默认使用Docker Hub公共注册服务器的仓库),用户也可以通过配置来使用自定义的镜像仓库,笔者在前面就自定义了镜像仓库。
既然镜像这么重要,那么本篇就围绕镜像这一核心概念来具体介绍相关操作:(1)如何使用pull命令从Docker Hub仓库中下载镜像到本地;(2)如何查看本地已有的镜像信息和管理镜像标签;(3)如何在远端仓库中使用search命令进行搜索和过滤;(4)如何删除镜像标签和镜像文件;(5)如何创建用户定制的镜像并且保存为外部文件;(6)如何往Docker Hub仓库中推送自己的镜像。
获取镜像镜像是运行容器的前提,因此首先是需要获取镜像,开发者可以使用docker [image] pull命令直接从官方的Docker Hub网站上进行获取,该命令的格式为docker [image] pull NAME[:TAG],其中NAME是镜像仓库名称,用来区分镜像,而TAG则是镜像的标签,一般用来表示版本信息,因此通常 ...
Docker与容器
写在前面从19年初开始使用Docker到现在差不到两年了,感觉对于Docker的认识还停留在使用的阶段,各个知识点串联度不够,没有形成一个体系,因此打算抽出一些时间来系统学习Docker,以便在后续使用的时候更加得心应手。本篇首先学习Docker是什么,之后会剖析Docker和相关容器技术,以及它在DevOps等运用场景所带来的巨大便利,最后学习Docker在整个虚拟化领域中的技术定位。
虚拟技术我们知道在主机时代比拼的是单个服务器的性能,如CPU主频和内存的强弱,而在云时代,最为看中的则是凭借虚拟化技术所构建的集群处理能力。从传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则更优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超虚拟机的轻量级虚拟化。因此有人甚至将其称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切的称为“容器云”。
什么是DockerDocker是基于Go语言开发的开源容器项目,它诞生于2013年。现在主流的操作系统包括Linux的各大发行版、macOS、Windows等都已经支持Docker。
Docker的构想是要 ...
规则持久化存储
写在前面前面我们通过一个入门的demo来演示了如何使用Sentinel来实现接口的限流,其实它只是流控规则的一种实现,流控规则除了基于QPS和并发数以外,还支持调用关系的流量控制,但是这都不是本文的重点。本文主要介绍基于流控规则的QPS方式,如何将之前使用的流控规则进行持久化存储。
规则持久化现在系统出了一个bug,需要重启sentinel-hello服务,然后你会发现一个神奇的现象,就是之前开发者在sentinel-dashboard页面配置的限流规则居然不见了,而且该微服务显示处于“失联”状态:
因此现在需要做的就是对限流规则进行持久化操作,那么如何进行持久化呢?往下看,并阅读 官方文档 进行了解。
从官方文档中可以看出,我们上面讲到的持久化,其实是动态规则扩展里面的外部配置源扩展,接下来就详细学习这个外部配置源扩展。不过在此之前有必要先对动态规则扩展进行一个学习,并通过流控规则基于QPS实现这一例子,来介绍规则持久化存储。
内存态扩展内存态扩展就是直接通过使用API来直接修改规则,Sentinel提供了以下5个API来修改不同的规则:
12345FlowRuleManager. ...
实现接口限流
写在前面我们知道随着微服务应用的增多,服务与服务之间的稳定性就显得越来越重要,否则极易出现由于某个服务出现问题而导致其余服务全部崩溃的雪崩效应发生。在前面学习Spring Cloud的时候,我们知道了如何使用Hystrix来进行服务熔断和降级,但是由于Netflix已经宣布Hystrix不再更新,那么我们就需要选择一个它的替代品,除了官方推荐的resilience4j外,Spring Cloud Alibaba旗下的Sentinel也是备受关注。
Sentinel介绍Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保存等多个维度来保护服务的稳定性。仅仅通过本篇文章是无法掌握和使用Sentinel的,因此我会用后续几篇文章来深入理解Sentinel,本文主要介绍如何使用Sentinel来实现接口限流。
Sentinel特点(1)丰富的应用场景。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。(2)完备的实时监控。Sentinel还提供实时的监控功能,使得开发者可以在 ...
Open API、存储和集群部署
写在前面前面通过两篇文章的学习,已经对Nacos有了一个较为初步的认识和使用,接下来开始学习Nacos的Open API、数据持久化、监控、集群部署、Nacos Docker等知识。
Open API我们知道Nacos提供了可视化界面,一般来说可视化的系统都提供了一套可供程序调用的API,自然Nacos也不例外。Nacos提供了一套较为完整的API接口,开发者可以通过这些接口便能很方便的基于Nacos进行二次开发。
配置管理Nacos对于配置管理提供了4个接口,分别用于获取、监听、发布和删除配置,这里以获取配置接口为例进行介绍。
获取配置请注意这里采用标准的API格式进行书写:(1)描述:获取Nacos上的配置;(2)请求类型:GET;(3)请求URL:/nacos/v1/cs/configs;(4)请求参数:
名称
类型
是否必须
描述
tenant
string
否
租户信息 ,对应于Nacos的命名空间ID字段
dataId
string
是
配置集ID
group
string
是
配置分组
(5)返回配置:
类型
描述
:——–:
: ...
实现配置中心
写在前面在前面分析Nacos的pom.xml依赖文件时,我们发现Nacos不仅支持Eureka的服务发现与注册外,还具有Ribbon的客户端负载均衡、Config的分布式配置等功能。那么本篇就来学习最后的一个功能,如何使用Nacos实现配置中心这一目的。
通过Nacos的配置管理,开发者可以将整个架构体系中的所有配置都集中在Nacos中进行存储。
快速入门接下来将演示如何使用Nacos实现配置中心,主要包括如何在Nacos中创建配置内容和如何在Spring Cloud应用中加载Nacos配置中心的配置信息。
创建配置请注意这里依旧不像之前在学习Spring Cloud Config实现配置中心时那样,需要先创建一个Spring Boot应用作为config-server,那是因为这里的Nacos既是一个“eureka-server”项目,还是一个“config-server”项目,因此配置中心服务端项目其实可以复用之前的nacos-server-1.3.1,但是需要进行一些配置修改,如下所示:
第一步,启动Nacos服务端,点击左侧的配置管理—>配置列表,然后点击右上角的“+”按 ...
实现服务注册与发现
写在前面在前面我们学习了Netflix开源的Eureka组件来实现服务发现与服务注册中心,接下来学习Spring Cloud Alibaba开源的的Nacos组件,使用它来代替eureka和consul等传统方式来实现服务发现与服务,注册中心以及Spring Cloud Config分布式配置中心的功能。由于Nacos是阿里巴巴开源的,因此中文文档非常齐全,由于本文主要介绍Spring Cloud集成Nacos,因此对于Nacos的详细介绍不会有很多篇幅,而更多的内容则会放在另一个系列文章中。
Nacos是什么Nacos简介Nacos致力于帮助开发者发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos帮助开发者更敏捷和容易地构建、交付和管理微服务平台。 Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos特性在Nacos中,服务(Service)是一等公民,Nacos支持几乎所有主流类型的“服务”的发现、配置和管理,如Kubernetes Ser ...
Spring Cloud Alibaba介绍
写在前面在前面我们学习的都是Netflix或者Spring官方社区提供的微服务组件,也就是通常意义上的Spring Cloud技术栈,但是在一开始就提到过实现微服务不一定需要使用Spring Cloud技术栈,还可以使用国内阿里巴巴公司开源的另一套方案,不过现在这套方案已经成功纳入Spring Cloud体系,并成为Spring Cloud Alibaba项目。
Spring Cloud Alibaba简介Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。
Spring Cloud Alibaba项目由两部分组成:阿里云产品组件和阿里巴巴开源组件,它旨在为Java开发人员在使用阿里巴巴产品的同时,通过利用Spring框架的设计模式和抽象能力,注入Spring Boot和Spring Cloud的优势。
请注意版本问题,Spring Cloud Alibaba项目的版本号格式为x.x.x的形式,其中x的数值类型为数字,从0开始取值,且不 ...