容器

【超详细】通俗易懂地理解并使用Docker(上)

前提是你 提交于 2020-02-07 02:36:14
文章目录 Docker是啥 Docker能干些啥 Docker是啥 打开翻译君输入 Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的Docker其操作的也是集装箱,这个集装箱就静态而言就是一个应用镜像文件,就动态而言,就是一个容器。蒙了吧?好吧,上图解释。 Docker从 狭义上 来讲就是一个进程,从 广义上 来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。本文所有讲的Docker都是指Docker容器哦。 再继续下文之前我们首先要明确几个docker重要的基本概念: 镜像,容器,仓库。 镜像Docker images ,就类似于VM虚拟机里面的快照,但是可比快照轻量化多了。快照不懂?那可以把images直接理解成一个文件夹。我们可以通过ID或者易识别的名字+tag来确认唯一的目标镜像。ImagesID是一个64位的字符,但是一般我们都是使用前面12位就足够区别了。 如下图中左边红框中redis: lates和右边的红框中5f515359c7f8都唯一表示为同一个镜像。所以我们一般的镜像可以命名为类似centos:latest、centos

Spring IoC容器和AOP

妖精的绣舞 提交于 2020-02-07 00:45:04
Spring IoC容器和AOP 1、Spring简单介绍 2、Spring常用注解 3、控制反转(IoC) 4、依赖注入(DI) 5、面向切面编程(AOP) 5.1 AOP涉及名词 5.2 Pointcut用法 6、Spring核心jar包 各jar包作用 1、Spring简单介绍 学习了spring,发现对spring的概念并不是特别理解,查阅了很多资料,资源乱七八糟的,参差不齐,看到合适的容易理解的并且觉得介绍的是正确的,遂做笔记摘抄与各位分享,如有错误,还请各位大佬批评指出 Spring有两大特性: I o C \color{red}{IoC} I o C 和 A O P \color{red}{AOP} A O P IoC(Inversion of Control),意为控制反转 AOP(Aspect-Oriented Programming),意为面向切面编程 Spring核心容器的主要组件是Bean工厂(BeanFactory),Bean工厂使用控制反转(IoC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AOP)的实现。 简单说 S p r i n g 是 一 个 轻 量 级 的 控 制 反 转 ( I o C ) 和 面 向 切 面 编 程 ( A O P ) 的 容 器 框 架 \color{red}{Spring是一个轻量级的控制反转(IoC

Docker简介

只愿长相守 提交于 2020-02-07 00:11:59
背景 开发和运维之间因为环境不同而导致的矛盾 集群环境下每台机器部署相同的应用 DevOps(Development and Operations) 简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到 任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏 捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。 Docker优点 简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管 理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就 能完成。 避免选择恐惧症: 如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如

spring(1)

∥☆過路亽.° 提交于 2020-02-06 23:46:06
Spring开篇 1.spring概述 ① Spring 是一个开源框架 ② Spring 为简化企业级开发而生,使用 Spring 开发可以将 Bean 对象, Dao 组件对象, Service 组件对象等交给 Spring 容器来管理,这样使得很多复杂的代码在 Spring 中 开发 却 变得 非常的优雅和简洁 ,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。 ③ Spring 是一个 IOC (DI) 和 AOP 容器框架。 ④ Spring 的优良特性 [1] 非侵入式 :基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API [2] 控制反转 : IOC —— Inversion of Control ,指的是将对象的创建权交给 Spring 去创建。使用 Spring 之前,对象的创建都是由我们自己在代码中 new 创建。而使用 Spring 之后。对象的创建都是由给了 Spring 框架。 [3] 依赖注入 : DI —— Dependency Injection ,是指依赖的对象不需要手动调用 setXX 方法去设置,而是通过配置赋值 。 [4] 面向切面编程 : Aspect Oriented Programming —— AOP [5] 容器 : Spring 是一个容器,因为它包含并且管理应用对象的生命周期 [6]

Docker Compose 网络

社会主义新天地 提交于 2020-02-06 18:04:09
概述 默认情况下,Compose 会为我们的应用创建一个网络,服务的每个容器都会加入该网络中。这样,容器就可被该网络中的其他容器访问,不仅如此, 该容器还能以服务名称作为 Hostname 被其他容器访问 。 默认情况下,应用程序的网络名称基于 Compose 的工程名称,而项目名称基于 docker-compose.yml 所在目录的名称。如需修改工程名称,可使用 --project-name 标识或 COMPOSE_PORJECT_NAME 环境变量。 假如一个应用程序在名为 myapp 的目录中,并且 docker-compose.yml 如下所示: version: '2' services: web: build: . ports: - "8000:8000" db: image: postgres 当我们运行 docker-compose up 时,将会执行以下几步: 创建一个名为 myapp_default 的网络 使用 web 服务的配置创建容器,它以 web 这个名称加入网络 myapp_default 使用 db 服务的配置创建容器,它以 db 这个名称加入网络 myapp_default 容器间可使用服务名称(web 或 db)作为 Hostname 相互访问。例如,web 这个服务可使用 postgres://db:5432 访问 db 容器。

【程序报错】Spring容器启动时报异常:Can not set field to com.sun.proxy.$Proxy

喜欢而已 提交于 2020-02-06 15:37:56
问题 1 异常信息 在Web项目中Spring容器启动的时候,报错信息为Can not set field… to com.sun.proxy.$Proxy。 2 本质 因为JDK实现动态代理业务的时候,只能针对接口进行代理。然而对于类需要进行代理,需要使用到CGLib。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。正是由于在代码中使用了类代理,但是配置不正确,所以报错。 3 相关代码 首先是定义了一个接口: public interface CpsAccountService { /* 具体业务逻辑省略 */ } 然后编写了接口的实现类: @Service public class CpsAccountServiceImpl implements CpsAccountService { /* 具体业务逻辑省略 */ } 最后是在控制器层注解装配: @Controller @Api ( value = "CPS外部合作商相关接口" ) @RequestMapping ( value = "api/cps/*" ) public class CpsController { @Autowired private

InfluxDB+cAdvisor+Grafana容器管理

强颜欢笑 提交于 2020-02-06 15:24:52
InfluxDB InfluxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,需要提供实时数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。 1.InfluxDB的安装 下载镜像 docker pull tutum/influxdb 创建容器 docker run -di \ -p 8083:8083 \ -p 8086:8086 \ --expose 8099 \ --expose 8099 \ --name influxsrv \ tutum/influxdb 上面,8083端口是web访问端口,8086是数据写入端口。 安装好,浏览器访问192.xxx.xx.xxx:8083 2.使用influxDB 通过query templates下拉选项可以快速使用命令语句。 创建数据库 CREATE DATABASE "cadvisor" 查看所有数据库 SHOW DATABASES 创建用户 CREATE USER "zhangsan" WITH PASSWORD 'password' WITH ALL PRIVILEGES 查看用户 SHOW USERS 用户授权 grant all privileges on cadvisor to zhangsan grant write on cadvisor

云的革命(三)原生云

二次信任 提交于 2020-02-06 13:26:18
原 生 云 术语原生云已成为一种越来越流行的简化方式,用于谈论利用云,容器和编排的现代应用程序和服务,通常基于开源软件。实际上,云计算本地计算基金会(CNCF)成立于2015年,用他们的话说,“围绕一系列高质量项目建立社区,这些项目将容器作为微服务架构的一部分进行编排。” 作为Linux Foundation的一部分,CNCF旨在将开发人员,最终用户和供应商(包括主要的公共云提供商)聚集在一起。 CNCF旗下最着名的项目是Kubernetes本身,但该基金会还孵化和推广云原生态系统的其他关键组件:普罗米修斯,特使,头盔,流利,gRPC等等。 那么云本地人究竟是什么意思呢?像大多数这样的事情,它对不同的人意味着不同的东西,但也许有一些共同点。 原生云应用程序在云中运行;这没有争议。但是,仅仅使用现有应用程序并在云计算实例上运行它并不会使其成为原生云。它既不是在容器中运行,也不是使用Azure的Cosmos DB或Google的Pub / Sub等云服务,尽管这些可能是原生云应用程序的重要方面。让我们来看看大多数人都同意的云原生系统的一些特征: 自动化 如果应用程序要由机器而不是人工来部署和管理,则需要遵守通用标准,格式和接口。 Kubernetes提供这些标准接口的方式意味着应用程序开发人员甚至不需要担心它们。 无处不在,灵活多变,因为它们与磁盘等物理资源分离

Docker基础命令

喜欢而已 提交于 2020-02-06 10:30:20
启动docker sudo systemctl start docker sudo docker run hello-world 使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像 镜像: docker pull ubuntu 获取镜像 docker rmi hello-world 删除hello-world镜像 docker build -t myorg/centos:7.2 . 构建镜像 -t:指定要创建的目标镜像名称 . :Dockerfile 文件所在目录,可以指定绝对路径 docker images 命令可以查看到当前已有的镜像 docker images -a 可以查看到镜像的中间 docker serarch 查找镜像 docker tag 860c279d2fec runoob/centos:dev docker tab 为镜像添加一个新的标签 容器: 参考: Docker 容器使用 docker run -d -i --name mycontainer2 myorg/centos:7.2 -i:交互式操作、-t:终端 docker run -it ubuntu 是启动容器的命令,其中 -d 参数表示让容器在后台运行,-i 参数表示保持标准输入打开,这样容器就不会在启动完成后立即退出了。 docker run -d -p 5000

容器应急使用 vector deque list map set

这一生的挚爱 提交于 2020-02-06 07:59:55
5个容器的部分函数 vector deque list map set assign 1 1 1 at 1 1 1 back 1 1 1 begin 1 1 1 1 1 capacity 1 cbegin 1 1 1 1 1 cend 1 1 1 1 1 clear 1 1 1 1 1 count 1 1 crbegin 1 1 1 1 1 crend 1 1 1 1 1 data 1 emplace 1 1 1 1 1 emplace_back 1 1 1 emplace_front 1 1 emplace_hint 1 1 empty 1 1 1 1 1 end 1 1 1 1 1 equal_range 1 1 erase 1 1 1 1 1 find 1 1 front 1 1 1 get_allocator 1 1 1 1 1 insert 1 1 1 1 1 key_comp 1 1 lower_bound 1 1 max_size 1 1 1 1 1 merge 1 pop_back 1 1 1 pop_front 1 1 push_back 1 1 1 push_front 1 1 rbegin 1 1 1 1 1 remove 1 remove_if 1 rend 1 1 1 1 1 reserve 1 resize 1 1 1 reverse 1 shrink