欢迎大家来到IT世界,在知识的湖畔探索吧!
# 01_深入解析docker容器化技术(一)
一、第一章学习目标
docker 学习目标:
1、什么是虚拟化
2、docker介绍
3、docker版本以及安装
4、docker架构
5、docker镜像操作
6、docker容器操作
二、什么是虚拟化
1 什么是虚拟化
I
1)虚拟化概念
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。
一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。
2)虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等。
2、虚拟化架构通常包括:全虚拟化架构、操作系统虚拟化架构、平台虚拟化架构。
3、安装虚拟机,需要打开电脑的虚拟技术 Intel VT-x(主板BIOS参数设置),否则会出现以下错误界面。
欢迎大家来到IT世界,在知识的湖畔探索吧!
三、全虚拟化架构介绍
1、虚拟化架构:全虚拟化
在全虚拟化的虚拟平台中,GuestOS并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的HostOS。因为全虚拟化的VMM会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由GuestOS来操作使用。
这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是VMM为GuestOS制造了这种假象。
2、全虚拟化架构示意图
四、操作系统层虚拟化介绍
1、虚拟化架构:操作系统虚拟化
1)操作系统层虚拟化是指通过划分一个宿主操作系统的特定部分,产生一个个隔离的操作执行环境。
2)操作系统层的虚拟化是操作系统内核直接提供的虚拟化,虚拟出的操作系统之间共享底层宿主操作系统内核和底层的硬件资源。
3)操作系统虚拟化的关键点在于将操作系统与上层应用隔离开,将对操作系统资源的访问进行虚拟化,使上层应用觉得自己独占操作系统。
2、操作系统虚拟化架构示意图:
五、平台虚拟化介绍
1、虚拟化架构:平台虚拟化
1)平台虚拟化表现为在一个给定的硬件平台上宿主机创造一个模拟的计算机环境虚拟机提供给客户机。
2)客户机软件对于用户应用程序没有限制;许多宿主机允许运行真实的操作系统。客户机就好像直接运行在计算机硬件上,伴随着几个明显的警告。虚拟机对硬件资源(如网络,显示器,键盘,硬盘)的访问被统一管理在一个比处理器和系统内存更有限制性的层次上。
3)客户软件经常被限制访问计算机周边设备,或者被限制在较低的设备性能上,这取决于宿主机硬件访问策略设定。
2、平台虚拟化架构示意图:
六、hypervisor介绍
1、hypervisor虚拟机监视器 ( Virtual Machine Monitor,VMM )
Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor,VMM)。
2、Hypervisor是所有虚拟化技术的核心。
1)当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
2)Hypervisor是所有虚拟化技术的核心,软硬件架构和管理更高效、更灵活,硬件的效能能够更好地发挥出来。常见的产品有:VMware、KVM、Xen等等。
七、docker介绍
1、 容器技术介绍
1)在计算机的世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化(hypervisor virtualization,HV)有所不同。
2)HV管理程序虚拟化通过中间层将一台或者多台独立的机器虚拟运行与物理硬件之上,
3)而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。
4)由于容器技术是“客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看起来并不是非常灵活。
5)例如:可以在Ubuntu服务中运行Redhat Enterprise Linux,但无法再Ubuntu服务器上运行Microsoft Windows。
6)相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认为,由于虚拟容器所虚拟的是一个完整的操作系统,这无疑增大了攻击范围,而且还要考虑管理程序层潜在的暴露风险。
7)尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中,容器技术非常流行。
8)最常见的一个容器技术例子就是”权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进程。如果权限隔离监牢正在运行的进程被入侵者攻破,入侵者便会发现自己“身
陷囹圄”,因为权限不足被困在容器所创建的目录中,无法对宿主机进一步破坏。
9)最新的容器技术引入了OpenVZ、Solaris Zones以及Linux容器(LXC)。使用这些新技术,容器不在仅仅是一个单纯的运行环境。在自己的权限类内,容器更像是一个完整的宿主机。容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好的共存。
10)容器被认为是精益技术,因为容器需要的开销有限。和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器耗费的资源。
2、docker 介绍
1)Docker是一个开发,运输和运行应用程序的开放平台。Docker使您可以将应用程序与基础架构分离,以便快速交付软件。
2)使用Docker,您可以像管理应用程序一样管理基础架构(OS)。通过利用Docker的方法快速发送,测试和部署代码,您可以显着减少编写代码和在生产中运行代码之间的延迟。(代码改了)
3、 docker好处
容器提供了隔离性,结论是,容器可以为各种测试提供很好的沙盒环境。并且,容器本身就具有”标准性”的特征,非常适合为服务创建构建块。Docker的一些应用场景如下:
1)加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。
2)容器可以在开发环境中构建,然后轻松的提交到测试环境中,并最终进入生产环境。开发人员与运维人员进行职责的逻辑分离。
3)能够让独立的服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署由其实用。
4)用Docker创建隔离的环境来进行测试。例如,用Jenkins CI这样的持续集成工具启动一个用于测试的容器。(持续化集成war 实际部署:jenkins持续化集成jenkins +git )。
5)Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。
6)构建一个多用户的平台即服务(PaaS)基础设施。
7)为开发、测试提供一个轻量级的独立的沙盒环境。
8)提供软件即服务(SaaS)应用程序,例如Memcached即服务。
9)高性能、超大规模的宿主机部署(可以很多容器)。
4、沙盒
沙盒在计算机安全领域,沙盒(英语:sandbox,又译为沙箱)是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。
5、集装箱思想
1)Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件、应用程序。
2)和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容”装载”进去。
3)Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。
6、container 与 vm 区别:
1)通过下面这三张抽象图,类比概括出:容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。
2)容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。
八、虚拟机与容器的比较
1、虚拟机已死,容器才是未来
2、虚拟机VM与容器Docker的比较
九、docker版本以及安装介绍
1、docker 官网下载安装
https://www.docker.com
https://docs.docker.com/install/overview/
https://docs.docker.com/engine/install/centos/
2、docker版本分为:社区版和企业版。
3、CentOS7安装docker
在CentOS 7上安装Docker,可以按照以下步骤操作:
3.1、查看CentOS版本和操作系统内核版本:
“`bash
# 查看CentOS版本
$ cat /etc/redhat-release
$ more /etc/issue
# 查询操作系统内核版本
$ uname -r
$ uname -a
“`
3.2、卸载旧版本docker
“`bash
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
“`
3.3、安装 rpm
“`bash
sudo yum install rpm
“`
3.4、导入public key
“`bash
rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
“`
3.5、升级更新软件包
“`bash
yum update -y
“`
3.6、升级更新curl
“`bash
yum update nss -y
“`
3.7、下安装docker的依赖包
“`bash
sudo yum install -y yum-utils
“`
3.8、设置Docker的稳定仓库
“`bash
sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
“`
3.9、列出可安装的特定版本docker
“`bash
yum list docker-ce –showduplicates | sort -r
yum list docker-ce-cli –showduplicates | sort -r
yum list containerd.io –showduplicates | sort -r
“`
3.10、安装指定版本的 docker 引擎
“`bash
sudo yum install docker-ce-18.03.0.ce-1.el7.centos.x86_64
sudo yum install docker-ce-cli-18.09.0-3.el7.x86_64
sudo yum install containerd.io-1.6.6-3.1.el7
“`
4、启动Docker服务(两种方法):
“`bash
sudo systemctl start docker
sudo service docker start
sudo /etc/init.d/docker restart
“`
5、如果启动Docker服务失败,可以查看日志文件是否需要升级 device-mapper-event-libs:
“`bash
sudo tail -f /var/log/docker
sudo yum install device-mapper-event-libs -y
“`
6、使Docker开机自启:
“`bash
sudo systemctl enable docker
sudo chkconfig docker on
“`
7、验证Docker安装成功:
“`bash
sudo docker run hello-world
“`
8、如果拉取镜像出现连接超时等异常,可以配置阿里云或者多个镜像加速器网站
“`bash
# 如果没有 daemon.json, 创建配置文件
sudo vim /etc/docker/daemon.json
# 配置内容:
{
“registry-mirrors”: [“https://5y3wa0zw.mirror.aliyuncs.com”]
}
# 配置多个镜像加速器网站
{
“registry-mirrors”: [“https://5y3wa0zw.mirror.aliyuncs.com”,
“http://hub-mirror.c.163.com”,
“https://docker.m.daocloud.io/”,
“https://huecker.io/”,
“https://dockerhub.timeweb.cloud”,
“https://noohub.ru/”,
“https://dockerproxy.com”,
“https://docker.mirrors.ustc.edu.cn”,
“https://docker.nju.edu.cn”,
“https://xx4bwyg2.mirror.aliyuncs.com”,
“http://f1361db2.m.daocloud.io”,
“https://registry.docker-cn.com”,
“https://docker.mirrors.ustc.edu.cn”
]
}
# 重新加载启动docker
sudo systemctl daemon-reload
sudo systemctl restart docker
“`
9、查看 docker 安装情况和版本
“`bash
docker -d
sudo docker version
“`
十、docker引擎启动、停止、重启操作
1、查看 docker 启动状态
“`bash
sudo systemctl status docker
“`
2、停止 docker 服务
“`bash
sudo systemctl stop docker
“`
3、启动或者重新启动 docker
“`bash
sudo systemctl start docker
sudo systemctl restart docker
“`
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/101776.html