目录
1. Docker产生背景
2. Docker架构设计
3.安装Docker
1. Docker产生背景
- 存在问题
① 开发和运维环境或配置不同,导致开发环境运行良好的交付产物在运维环境出问题,此类问题让人不胜其烦。
② 传统运维过程中,如果线上有十台机器,每台都需要重新部署一次,重复劳动。
以上出现了两种解决方案:虚拟机和容器
- 虚拟机 vs 容器
虚拟机在一定程度可以解决这些问题。
虚拟机是虚拟出一套硬件后,在上面运行一套完整的操作系统,在该系统上再运行所需的应用,架构如下:
server:宿主机硬件
Host OS:宿主机操作系统
Hypervisor:硬件模拟
Guest OS:虚拟机操作系统
APP/Bins:虚拟机上的应用
虚拟机存在几个缺点:
① 资源占用多,虚机启动需要占用几百M的内存。
② 冗余步骤多,系统级别的操作步骤,往往无法跳过,比如用户登录。
③ 启动慢,往往几分钟 启动操作系统需要多久,启动虚拟机就需要多久。
相对于虚拟机,容器内没有自己的内核/操作系统,也没有硬件虚拟,容器内的应用进程直接运行在宿主的内核上,因此比传统虚拟机更加轻便。
容器不是模拟一个操作系统,而是对进程进行隔离。属于进程级别。
① 启动快, 相当于启动本机底层系统的一个进程,而不是虚拟机内部的进程,速度快很多。
② 占用资源少,容器只占用需要的资源,不占用那些没有用到的资源;多个容器可以共享资源,虚拟机是独享资源。
③ 体积小,容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。
一句话总结:虚拟机是虚拟一个操作系统,在操作系统上跑应用;容器不虚拟操作系统,应用跑在宿主机内核上,本质是进程隔离。
2. Docker架构设计
Docker是一个Client-Server架构的系统,左侧Client是操作端;中间docker宿主机,Docker守护进程运行在宿主机上,然后通过socket从客户端访问,守护进程接收命令并管理运行在主机上的容器;右边是远程仓库,可以提供Docker镜像。
比如Client执行docker pull,宿主机就会到远程仓库拉取镜像,docker run则将镜像放到容器中运行。
Docker有三个要素:镜像、容器、仓库。
- 镜像
镜像是容器的模板,是二进制文件(image),可以用来创建Docker容器,一个镜像可以创建很多容器,镜像与容器的关系类似软件安装包和运行程序的关系。
- 容器
容器是用镜像创建的运行实例,可以把镜像看成一个简易版的Linux环境和运行在其中的应用程序。
- 仓库
集中存放镜像的地方。类比github。分为公开库和私有库,国内阿里云。
3.安装Docker
在Centos7.6系统下,按如下网址,确认可行。
CentOS7安装Docker