目录

一、docker是虚拟化产品

1.1.虚拟化是什么

1.2.虚拟化产品对比

1.3.虚拟化两大组件

1.4.虚拟化功能

二、容器

2.1.容器是什么

2.2.容器的优点

2.3.容器的缺点

2.4.Docker与虚拟机的区别

2.5.容器在内核中支持2种重要技术

三、Docker

3.1.docker概念

3.2.Docker是什么

3.3.Docker核心概念

四、安装 Docker

五、Docker基本操作

5.1.查看docker版本信息

5.2.查看docker信息

5.3.配置阿里云镜像加速器

5.3.1.浏览器访问 

5.3.2.配置镜像加速器

5.3.3.重新加载配置并重启服务 

5.3.4.验证查看 


一、docker是虚拟化产品

1.1.虚拟化是什么

将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

1.2.虚拟化产品对比

  1. 全虚拟化:直接使用物理硬件,性能要求高
  2. 半虚拟化:虚拟机可以使用
  3. 仿真虚拟化:直接使用物理硬件资源(需要支持,还不完善)

VMware 客户端

VMware morkstation 个人安装在window安装虚拟机

VMware Fusion MAC 苹果机

VMware 服务端 exsi VMware vsphere 裸金属

客户端连接 VMware vsphere

现企业连接 VMware vsphere

KVM openstack Linux环境虚拟机 私有云

KVM基于内核虚拟机(四层)

半虚拟化 reh1  

微软 Microsoft Hyperv

virtualBOX 7.0 虚拟盒子

cirix Hypervisor

1.3.虚拟化两大组件

虚拟机管理器功能:调用资源

两大核心组件:QEMU、KVM

QEMU:

①可以理解为队列,核心目的是**调用资源内核中的资源**,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。

②QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。

KVM:

①用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。

②只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。

对于workstation而言,硬件辅助虚拟化,表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口/dev/kvm,可以加强辅助调用,在应用程序需要频繁调用的时候,需要开启。比如openstack。
 

1.4.虚拟化功能

在一个操作系统内,模拟多个操作系统

以软件的方式模拟物理设备的功能

二、容器

2.1.容器是什么

容器是一种技术,开发人员打包开发完成的一个应用(系统)以及所需的开发环境,然后通过容器可以运行在不同的计算机上面,也不需要重新配置相关环境,不同的是每一台计算机都需要配置运行容器的容器引擎,目前市场上主流就是Docker容器引擎,不过Docker容器引擎的配置很简单,比配置应用(系统)运行的环境简单,方便太多。每台要运行应用(系统)的计算机上面配置了Docker容器引擎之后,都单独独立可以运行之前打包完成的应用(系统)

2.2.容器的优点

灵活:即使是最复杂的应用也可以集装箱化。

轻量级:容器利用并共享主机内核。

可互换:可以即时部署更新和升级。

便携式:可以在本地构建,部署到云,并在任何地方运行。

可扩展:可以增加并自动分发容器副本。

可堆叠:可以垂直和即时堆叠服务。

2.3.容器的缺点

复杂性增加:随着容器及应用数量的增加,同时也伴随着复杂性的增加。在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用 Kubernetes 和 Mesos 等工具管理具有一定规模数量的容器。

原生 Linux 支持:大多数容器技术,比如 Docker,基于 Linux 容器(LXC),相比于在原生 Linux 中运行容器,在 Microsoft 环境中运行容器略显笨拙,并且日常使用也会带来复杂性。
不成熟:容器技术在市场上是相对新的技术,需要时间来适应市场。开发者中的可用资源是有限的,如果某个开发者陷入某个问题,可能需要花些时间才能解决问题。

2.4.Docker与虚拟机的区别

容器是在Linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

类别Docker虚拟机
启动速度秒级分钟级
计算能力消耗几乎无消耗50%左右
执行性能和物理系统几乎一致

会占用一些资源,弱于物理机

系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离

2.5.容器在内核中支持2种重要技术

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理碱盘500g)。

namespace的六项隔离

namespace系统调用参数隔离内容
UTSCLONE_NEWUTS主机名与域名
PCCLONE_NEWWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程编号
NETWORKCLONE_NEWNET网络设备、网络栈、端口等
MOUNTCLONE_NEWNS挂载点(文件系统)
USERCLONE_NEWUSER用户和用户组(3.8以后的内核才支持)

三、Docker

3.1.docker概念

Docker 的容器技术可以在一台下机上轻松为任何应用创建一个轻量级的、可移植的、目给自足的容器。
Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

3.2.Docker是什么

  • 是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源
  • 是在Linux容器里运行应用的开源工具
  • 是一种轻量级的“虚拟机"
  • Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量 级的、可移植的、自给自足的容器。

3.3.Docker核心概念

镜像

Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量和配置文件。
Docker也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

容器

Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

仓库

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
Docker的镜像、容器、日志等内容全部都默认存储在/var/lib/docker

四、安装 Docker

目前Docker只能支持64位系统

关闭防火墙

#关闭防火墙
systemctl stop firewalld.service
setenforce 0

安装依赖包

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
 
#yum-uti1s:提供了yum-config-manager工具。
#device mapper:是inux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。

设置阿里云镜像

安装 Docker-CE并设置为开机自动启动

1. #设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 ​
2. #安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io
 ​
3. #设置为开机自动启动
systemctl start docker.service
systemctl enable docker.service

 

 

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。

Docker服务端是一个服务进程,负责管理所有容器。
Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

五、Docker基本操作

5.1.查看docker版本信息

docker version

 

5.2.查看docker信息

docker info

5.3.配置阿里云镜像加速器

5.3.1.浏览器访问 

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 
获取镜像加速器配置

5.3.2.配置镜像加速器

vim /etc/docker/daemon.json
添加自己的加速器地址,如下图

5.3.3.重新加载配置并重启服务 

#重新加载配置并重启服务
systemctl daemon-reload     
systemctl restart docker

5.3.4.验证查看 

docker info

六、总结

vmware workstation 个人

vmware sphere /ESXI 企业级虚拟化

openstack(开发)/KVM Linux环境虚拟机 私有云环境 

容器:提供多台主机上运行应用程序的相同的运行环境

Docker是一个开源的应用容器引擎,基于go语言开发 是容器里面的运行应用的工具 ,是一个轻量级的虚拟机,可用在docker多个平台去使用的

docker容器可以被看做运行在宿主机上的一个进程容器共享宿主机内核容器通过 namespace(命名空间、名称)资源隔离,通过cgroup(资源配额)去限制资源

核心概念
镜像 运行容器的基础,包含运行应用程序所需的所有内容

容器是从镜像创建的运行实例

仓库集中保存镜像的地方(公有仓库dockerhub私有仓库 harhor)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐