Docker系列01-容器初探
关于容器的发展史
关于容器有不得不说的历史故事,以下资料来自于互联网收集整理所得:
容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的。
2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离。
2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器。
2005 年推出 OpenVZ,它通过对 Linux 内核进行补丁来提供虚拟化的支持,每个 OpenVZ 容器完整支持了文件系统、用户及用户组、进程、网络、设备和 IPC 对象的隔离。
2007 年 Google 实现了 Control Groups( cgroups ),并加入到 Linux 内核中,这是划时代的,为后期容器的资源配额提供了技术保障。
2008 年基于 cgroups 和 linux namespace 推出了第一个最为完善的 Linux 容器 LXC。
2013 年推出到现在为止最为流行和使用最广泛的容器 Docker,相比其他早期的容器技术,Docker 引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API。
2014 年 CoreOS 也推出了一个类似于 Docker 的容器 Rocket,CoreOS 一个更加轻量级的 Linux 操作系统,在安全性上比 Docker 更严格。
2016 年微软也在 Windows 上提供了容器的支持,Docker 可以以原生方式运行在 Windows 上,而不是需要使用 Linux 虚拟机。
容器与虚拟机的区别
左边是虚拟机右边是容器,从感官上,虚拟机的层级明显是比容器多,多了一个操作系统,而容器则是在原有操作系统上利用资源隔离等相关技术做了封装并实现了在应用层互相独立隔离,达到了类似虚拟机之间隔离独立的效果而性能损失较虚拟机这种方式少。虚拟机的方式也不是一无是处,虚拟机有它自身的优点,比如他是以上层再运行多个操作系统实例的方式做承载和隔离,更符合计算机的运行机制,程序代码迁移成本也更低,容器则往往需要一定的技术积累,才能做好容器对应的镜像。总体来讲,方案没有绝对的优劣之分,只有最适合自己需求的就是好方案。
容器的特点
一句话总结容器的特点:Build once,Run anywhere !(搭建一次,到处能用)
Docker技术的三大核心概念,分别是:
● 镜像(Image)
● 容器(Container)
● 仓库(Repository)
这些我们在后续的实战文章会详细展开描述,同时还会介绍容器的更多优点和便捷性。
不得不说的K8S
Kubernetes(简称K8s,是用8代替8个字符“ubernete”而成的缩写)是Google开源的一个容器编排引擎。既然已经有了流行的docker产品了,为什么还会衍生出一个k8s而且得到众多云商青睐并在k8s基础上退出自己的容器服务DaaS呢,那就不得不说k8s的特点:
● 协调辅助进程,协助应用程序整合,维护一对一“程序 – 镜像”模型。
● 挂载存储系统
● 分布式机密信息
● 检查程序状态
● 复制应用实例
● 使用横向荚式自动缩放
● 命名与发现
● 负载均衡
● 滚动更新
● 资源监控
● 访问并读取日志
● 程序调试
● 提供验证与授权
Docker系列01-容器初探的更多相关文章
- Docker系列01—容器的发展历程---Docker的生态圈
本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- Docker系列01—Docker 基础入门
一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...
- docker 系列 - 修改容器的 DNS 服务器
# 查看容器的 dns 解析设置文件, 也可以检查docker 运行环境 DNS docker run busybox:latest cat /etc/resolv.conf # 为容器 mybusy ...
- Docker 系列01: Centos7.3 上安装docker
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施.容器 ...
- Docker系列02: 容器生命周期管理 镜像&容器
A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...
- docker系列之六容器数据卷
docker之容器数据卷 一.容器数据卷 docker容器运行的时候,会产生一系列的文件,那么我们希望容器产生的数据能提供给其他的容器使用,也就是说怎么实现容器间的数据的共享呢?这就需要用到我们所提到 ...
- Docker系列06—基于容器制作镜像并上传到Docker Registry
本文收录在容器技术学习系列文章总目录 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容器制作镜像:基于dockerfile 制 ...
- Docker 容器基本操作[Docker 系列-2]
Docker 入门及安装[Docker 系列-1] 镜像就像是一个安装程序,而容器则是程序运行时的一个状态. 查看容器 查看容器 启动 docker 后,使用 docker ps 命令可以查看当前正 ...
随机推荐
- oracle 字符串转为数字排序
select * from user order by to_number(dept_id) asc
- Linux Zookeeper 安装, 带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 面试必备+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并发 ...
- 磁盘修复 mount: wrong fs type running e2fsck
当服务器或PC机器的硬盘在使用一段时间后,会出现无法使用正常进行使用: 1. 当将文件系统挂载到指定的目录的时候,会出现mount 失败,如下图: [root@template ~]# mount / ...
- 求连通块的面积 - BFS、DFS实现
本文以Leetcode中695.岛屿的最大面积题目为基础进行展开(题目
- vue路由进阶
一..全局路由前置守卫 1.首先看一下文档结构 Dashboard和Login是一级页面 home about mine是在Dashboard下的二级页面 2.router.js代码如下 impor ...
- 初识微信小程序
一.简介 微信小程序是运行在微信环境中的应用,它只能在微信中运行,不能运行在浏览器等其他环境中,微信团队提供了专门的开发工具用于微信小程序的开发,还提供了丰富的API,让我们的小程序能够具备与手机设备 ...
- 一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
- 简单了解一下:var 、let、const
var 重新赋值,重新定义,作用域 属于:function scope: let 声明的变量只在 let 命令所在的代码块内有效,Block scope. const 声明一个只读的常量,一旦声明,常 ...
- golang 自动下载所有依赖包
go get -d -v ./... -d标志只下载代码包,不执行安装命令: -v打印详细日志和调试日志.这里加上这个标志会把每个下载的包都打印出来: ./...这个表示路径,代表当前目录下所有的文件 ...
- Java并发面试问题,谈谈你对AQS的理解
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...