容器技术

docker容器虚拟化技术

随声附和 提交于 2019-12-18 11:59:13
简单来说,在Windows系统下安装各种运行环境的坑简直不要太多了(● ̄(エ) ̄●),并不仅限于docker、Nginx、PHP、Python等等 ,我会尽详细写出实际过程中遇到的各种各样的奇葩问题 1.docker适用环境 其实docker本身也没有太多在Windows下花功夫。 目前,docker仅支持Linux与Windows企业版、专业版、教育版。ps:家庭版不支持docker ,并且win10下可以安装 docker-for-windows ,这个安装包是 专门适用于win10,安装简单,而对于win7/8则可以使用 Docker Toolbox下载地址 2.Windows下无法对docker容器进行端口访问(端口映射的问题) 1.问题详情 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务,映射也做好 问题:在主机的浏览器中,打开localhost:port无法访问对应的Web服务。 2.问题解析 原因:docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows10。 3.解决办法

Kubernetes --(k8s)入门

*爱你&永不变心* 提交于 2019-12-18 09:12:50
k8s 简介: 什么是k8s? Kubernetes (k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整的功能,提高了大规模容器集群管理的便捷性。 Kubernetes的优势: 容器编排 轻量级 开源 弹性伸缩 负载均衡 相关网站: Kubernetes (k8s) 官网: https://kubernetes.io/ Kubernetes (k8s) 官方文档: https://kubernetes.io/docs/home/ Kubernetes(k8s)中文文档: https://www.kubernetes.org.cn/k8s Kubernetes (k8s )核心组件 etcd etcd是一个高可用的键值存储系统,K8s使用它来存储各个资源的状态,从而实现了Restful的API; api server 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;

Docker学习总结

烂漫一生 提交于 2019-12-18 06:14:50
本文作为总结性文章,不会详细讲解Docker。但会把已学习的、了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多壁。博主水平有限,对于Docker还在不断学习中,本文如有不对的地方,烦请指出。 Docker是什么 Docker 是一个开源的应用容器引擎(Engine),让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 Docker与传统的虚拟机(如VMware,VirtualBox)很相似,但更具优势: 1、创建和销毁秒级完成,启动速度飞快; 2、体积小,可迁移到任何流行的Linux机器上; 3、占用系统资源极低; 4、可自动化部署、集群管理。 Docker基础 需要掌握的内容: 1、安装 2、区分Docker服务端(Server)与客户端(Client) 3、镜像 4、容器 5、容器互联 6、数据卷 7、镜像仓库 8、Dockerfile 此阶段建议阅读: 1、《Docker技术入门与实战》 2、 Docker官方文档 : https://docs.docker.com/ 3、Docker学习笔记 http://www.cnblogs.com/52fhy/p/5638571.html 说明:官方文档虽然为英文

服务计算——容器化技术与容器服务

泪湿孤枕 提交于 2019-12-18 04:57:29
文章目录 Docker 准备docker环境 使用阿里云安装docker 运行容器 Docker基本操作 MYSQL与容器化 构建镜像练习 使用MYSQL容器 容器监控与日志 过程中的错误及解决方案 本文简要记录了在CentOS7中安装docker的步骤和MYSQL的容器化 Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 准备docker环境 使用阿里云安装docker 建立仓库 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2. 获取阿里云docker sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3. 查看指定版本 yum list docker-ce --showduplicates 可以看到有多种版本的docker选择安装 4. 安装指定版本 yum install -y --setopt = obsoletes = 0 \ docker

Java面试题2

℡╲_俬逩灬. 提交于 2019-12-18 03:56:18
什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。 死锁的产生的一些特定条件: 1、互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 。 2、请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3、不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。 4、循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。 如何避免: 1、加锁顺序: 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。当然这种方式需要你事先知道所有可能会用到的锁,然而总有些时候是无法预知的。 2、加锁时限: 加上一个超时时间,若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁

6.9服务与主机之间的映射

时光怂恿深爱的人放手 提交于 2019-12-18 03:42:29
很早之前,就有关于“每台机器(machine)应该有多少个服务”的讨论。在我们继续之 前,应该找一个比“机器”更好的术语。在前虚拟化时代,单个运行操作系统的主机与底 层物理基础设施之间的映射形式有很多种。因此,我倾向于使用“主机”(host)这个词来 做通用的隔离单元,也就是能够运行服务的一个操作系统。如果你直接在物理机上部署, 那么一台物理机映射到一台主机(在当前上下文中,这个词可能不完全正确,但确实也找 不到更好的了)。如果你使用了虚拟化,单个物理机会映射到多个独立的主机,并且每个 都可以包含一个或者多个服务。 所以在考虑不同的部署模型时,我会使用主机这个词。那么每台主机应该有多少个服 务呢? 我有自己倾向的模型,但要考虑多个因素,来决定哪个模型最适合你。需要注意的一点 是:某些决定会限制可用的部署方式。 6.9.1单主机多服务 如图6-6所示,在每个主机上部署多个服务是很有吸引力的。首先,从主机管理的角度来 看它更简单。在一个团队管理基础设施,另一个团队管理软件的模式下,管理基础设施团 队的工作量通常与所要管理的主机量成正比。如果单个主机包含更多的服务,那么主机管 理的工作量不会随着服务数量的增加而增加。其次是关于成本。即使你有一个能够提供一 些配置和更改虚拟主机大小等服务的虚拟化平台,虚拟化的基础设施本身也会占用一部分 资源,从而减少服务可用的资源。在我看来

Docker跨主机网络——manual

三世轮回 提交于 2019-12-18 00:31:59
1. Macvlan 简介 在 Macvlan 出现之前,我们只能为一块以太网卡添加多个 IP 地址,却不能添加多个 MAC 地址,因为 MAC 地址正是通过其全球唯一性来标识一块以太网卡的,即便你使用了创建 ethx:y 这样的方式,你会发现所有这些“网卡”的 MAC 地址和 ethx 都是一样的,本质上,它们还是一块网卡,这将限制你做很多二层的操作。有了 Macvlan 技术,你可以这么做了。 Macvlan 允许你在主机的一个网络接口上配置多个虚拟的网络接口,这些网络 interface 有自己独立的 MAC 地址,也可以配置上 IP 地址进行通信。Macvlan 下的虚拟机或者容器网络和主机在同一个网段中,共享同一个广播域。Macvlan 和 Bridge 比较相似,但因为它省去了 Bridge 的存在,所以配置和调试起来比较简单,而且效率也相对高。除此之外,Macvlan 自身也完美支持 VLAN。 同一 VLAN 间数据传输是通过二层互访,即 MAC 地址实现的,不需要使用路由。不同 VLAN 的用户单播默认不能直接通信,如果想要通信,还需要三层设备做路由,Macvlan 也是如此。用 Macvlan 技术虚拟出来的虚拟网卡,在逻辑上和物理网卡是对等的。物理网卡也就相当于一个交换机,记录着对应的虚拟网卡和 MAC 地址,当物理网卡收到数据包后,会根据目的 MAC

如何理解LXC与Docker之间的主要区别

删除回忆录丶 提交于 2019-12-17 20:39:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 两者的概述 容器技术独立运行并且从主机系统上封装应用程序工作量。把容器想象成可以安装和运行应用程序的主机操作系统里面的操作系统,从实用目的来讲,它就像一个虚拟机。 LXC项目给不同配置和用户空间应用提供最小的容器操作样本来管理容器生命周期, LXC项目的这个特性和Linux内核使模仿机制能够正常启用。 便携性 容器技术将应用从主机操作系统上解耦下来,摘录该程序并且使之在任意支持LXC的系统上都实现轻便化。低调的说法就是:非常好用。用户在这样一个原始和最小库的Linux操作系统上可以在容器里运行任何程序(就像是在容器里运行LAMP堆栈)。 因为应用程序和工作量是相对独立的,所以用户可以运行多版本的语言,比如PHP,Python,Ruby,Apache,这些语言都可以共存,隐藏在容器里。实现云计算,就好比是这些例子和工作量都可以灵活的被移动到别的系统,复制,以及快速配置。 难道虚拟技术就做不到吗? 不不不,虚拟技术也可以做到,但是会有一定程度的性能损失,灵活度也会下降。容器技术不是模仿硬件层次,而是在Linux内核里使用cgroup和namespaces来打造轻便的、将近裸机速度的虚拟技术操作系统环境。因为不是虚拟化存储,所以容器技术不会管底层存储或者文件系统,而是你放哪里,它操作哪里。

容器与微服务持续交付

亡梦爱人 提交于 2019-12-17 18:49:10
持续交付推进DevOps 持续集成与持续交付 可视化 工具 流 DashBoard 微服务架构模式经典场景 研发工作流 需求管理 看板 ------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 前端性能核对表Checklist-2018 大型电商互联网性能优化案例 国际化环境下系统架构演化 微服务架构设计 视频直播平台的系统架构演化 微服务与Docker介绍 Docker与CI持续集成/CD 互联网电商购物车架构演变案例 互联网业务场景下消息队列架构 互联网高效研发团队管理演进之一 消息系统架构设计演进 互联网电商搜索架构演化之一 企业信息化与软件工程的迷思 企业项目化管理介绍 软件项目成功之要素 人际沟通风格介绍一 精益IT组织与分享式领导 学习型组织与企业 企业创新文化与等级观念 组织目标与个人目标 初创公司人才招聘与管理 人才公司环境与企业文化 企业文化、团队文化与知识共享 高效能的团队建设 项目管理沟通计划 构建高效的研发与自动化运维 某大型电商云平台实践 互联网数据库架构设计思路 IT基础架构规划方案一(网络系统规划) 餐饮行业解决方案之客户分析流程

Servlet 单例多线程

大城市里の小女人 提交于 2019-12-17 14:34:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 深入研究Servlet线程安全性问题 http://www.cnblogs.com/gw811/archive/2012/09/07/2674859.html Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例); 2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池通过web.xml,初始化每个参数值等等。 3.当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread) 调度它管理下线程池中等待执行的线程(Worker Thread)给请求者; 4.线程执行Servlet的service方法; 5.请求结束,放回线程池,等待被调用; (注意:避免使用实例变量(成员变量),因为如果存在成员变量,可能发生多线程同时访问该资源时,都来操作它,照成数据的不一致,因此产生线程安全问题) 从上面可以看出: 第一:Servlet单实例,减少了产生servlet的开销; 第二