Docker 是什么?
Docker是一种虚拟化容器技术, 通过Docker这种虚拟化容器技术,我们可以对物理机的资源进行更加合理有效的利用,可以将一台物理及其虚拟化出很多个拥有完整操作系统并且相互独立的”虚拟计算机“
什么是虚拟化?
在计算机中,虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源.这些资源的虚拟部分不受现有资源的架设方式,地域或物理组态所限制,一般所指的虚拟化资源包括计算能力和资料存储
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件从最大化的利用物理硬件
虚拟化技术的种类有很多,包括但不限于: 软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等
常用的虚拟化技术
-
全虚拟化:(VMWare): 不需要对GuestOS操作系统软件的源代码做任何的修改,就可以运行在这样的VMM中
在全虚拟化的虚拟平台中,GuestOS并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的HostOS。因为全虚拟化的VMM会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由GuestOS来操作使用。这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是VMM为GuestOS制造了这种假象。
-
OS虚拟化(Docker): 操作系统级别的虚拟化技术
不需要对于底层进行改动或者考虑 OS 下面,也没有所谓的 VMM 去监管分配底层资源,而是通过 OS 共享内核的方式,为上层应用提供多个完成且隔离的环境("the kernel allows the existence of multiple isolated user space instances"),这些 实例(instances) ,就被称之为 容器(container) ,虚拟化资源和性能开销很小,而且也不需要硬件的支持,是一种轻量化的虚拟化实现技术
Docker 特点
- 启动速度快: Docker容器启动操作系统在秒级就可以完成,而VMware却是分钟级
- 系统资源消耗低: 一台Linux服务器可以运行成百上千个Docker容器,而VMware只能运行十数个左右
- 更轻松的迁移和扩展: 由于Docker容器比VMware占用更少的硬盘空间,在需要搭建几套软件环境的情况下,对安装好的Docker容器进行迁移会更快捷,更方便,而且Docker容器几乎可以在任意的平台上运行,包括虚拟机、物理机、公有云、私有云、个人电脑等,这种兼容性,可以让用户将一个应用程序从一个平台直接迁移到另一个平台
Docker核心概念
-
镜像(Image): 镜像就好比JAVA中的类,但是它更像是VM的模版,多层结构,从外部看是一个整体,实际包含了精简版的操作系统和所必需的文件及依赖,抽象出来镜像就是一种构建时状态(build-time),对应的容器就是运行时状态(run-time)
-
容器(Container): 我将容器比作由类实例化出的对象,与镜像是一对多的关系
-
仓库(Repository): 对镜像进行分门别类的存储(docker search),根据tag区分,可以是官方镜像,可以是个人镜像
docker search mysql
- 注册中心(Registry): DockerHub、USTC、网易云、AliCloud (一个注册中心有多个仓库,一个仓库内相同镜像会有多个tag/版本)
Docker安装
基于CentOS 7.x安装
yum remove docker # 安装之前先卸载
yum install docker # 安装
systemctl start docker # 启动
基于CentOS 8.x安装
developer.aliyun.com/article/753…
基于Mac 安装
brew cask install docker