为什么需要docker?
docker的焦点观念
什么是docker?基于Linux而言,docker是在个中运行应用的一款开源东西,可以认为是一种轻量级的虚拟机。docker的logo是一条载着集装箱的鲸鱼(旧版的logo),新版的logo则是直接简化了细节,变动了颜色,如下图。
从图片中就可以看出来,docker的建设和开拓者们的意图。鲸鱼——宿主机,块状箱——断绝的容器(后头先容什么是docker容器)。而docker的宗旨:Build、Ship and Run Any APP,Anywhere。详细而言,就是通过对应应用组件的封装、宣布、陈设、运行等生命周期的打点,从而到达应用组件级此外“一次封装、随处运行”的目标。
举个例子就比如本身开拓了一款应用软件,但愿它在任何所在,任何时间、任何操纵系统中都可以利用的时候,就可以将它基于docker来实现。虽然,对付docker而言,这个组件可以是一个应用,也可以是一个设置,甚至可以是一个完整的操纵系统。
为什么需要docker?其实docker的呈现对付开拓人员是莫大的福音。设想今朝或将来基于云平台的应用或软件的开拓,离开了底层的硬件,而利用者需要在任何时间、任何所在都可以获取相关的资源,那么docker便可以提供这样的诉求。
下面直接给出docker容器与传统虚拟机的较量
特性Docker容器虚拟机启动速度 秒级 分钟级
计较机机能损耗 险些不损耗 损耗一半阁下
机能 靠近原生 弱之
系统支持量 上千个 几十个
断绝性 资源限制 完全断绝
docker焦点办理的问题是操作容器实现雷同VM的成果,从而以越发节减的硬件资源给用户提供更多的计较资源,而且docker操纵利便,还可以通过Dockerfile设置文件支持机动的自动化建设和陈设。
接下来看一下Docker与传统虚拟机架构的比拟:
通过上图发明,虚拟机是在物理资源层面实现的断绝,相对付虚拟机,Docker是基于APP层面实现的断绝,而且省去了虚拟机操纵系统,从而节减了一部门的系统资源。
Docker守护历程可以直接与主操纵系统举办通信,为各个Docker容器分派资源;它还可以将容器与主操纵系统断绝(为了安详),并将各个容器相互断绝。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操纵系统,Docker可以节减大量的磁盘空间以及其他系统资源。
简朴来说,虚拟机和docker的区别就在于虚拟机需要通过Hypervisor对硬件资源也举办虚拟化,而docker是直接利用宿主机的硬件资源的,因此虚拟机的断绝性越发彻底,而docker的断绝性次之。
Docker的焦点观念 1、镜像——image 可以领略为雷同我们虚拟机中的快照,是建设容器的基本,可以说无镜像,不容器。
2、容器——container 基于镜像建设的运行实例,可以被启动、遏制和删除。每个容器之间都是彼此断绝、互不行见的。
3、客栈——repository 生存镜像的处所,可以领略为镜像囤积地。可以将本身建设的举办推送到客栈中,利便随时随地拉取利用。
客栈注册处事器(registry)是存放客栈的处所,个中包括了多个客栈,每个客栈中存放一类镜像,而且利用差异的标签(tag)来区分。今朝最大的民众客栈就是Docker Hub,个中存放了数量复杂的镜像给用户下载利用。
这边增补说明一下docker架构:
Docker利用客户端-处事器架构。Docker 客户端与Docker 守护历程举办对话,该守护历程完成了构建,运行和分发Docker容器的沉重事情。Docker客户端和守护措施可以 在同一系统上运行,可能您可以将Docker客户端毗连到长途Docker守护措施。Docker客户端和守护措施在UNIX套接字或网络接口上利用REST API举办通信。
架构图示:
Docker的安装流程基于Linux/CentOS7的安装陈设流程如下:
操纵系统版本:centos7.7
1、情况陈设 [root@localhost ~]# hostnamectl set-hostname docker [root@localhost ~]# su [root@docker ~]# cat /etc/RedHat-release CentOS Linux release 7.7.1908 (Core) [root@docker ~]# systemctl stop firewalld && systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service. [root@docker ~]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config [root@docker ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf #开启路由转发 [root@docker ~]# sysctl -p #加载路由转发成果 net.ipv4.ip_forward = 1 [root@docker ~]# systemctl restart network 2、安装依赖包 [root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 ... 更新完毕: lvm2.x86_64 7:2.02.185-2.el7_7.2 作为依赖被进级: device-mapper.x86_64 7:1.02.158-2.el7_7.2 device-mapper-event.x86_64 7:1.02.158-2.el7_7.2 device-mapper-event-libs.x86_64 7:1.02.158-2.el7_7.2 device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2 lvm2-libs.x86_64 7:2.02.185-2.el7_7.2 完毕!说明: