1-1 Docker介绍与体系结构
Docker是应用容器引擎,对应用进程进行隔离封装,且独立于宿主机与其他进程,这种运行时封装的状态成为容器。
Docker包括文件系统、网络互联、镜像管理等方面,极大简化了容器管理。0.7版本以后去除LXC,转为自行研发的libcontainer,从1.11版本开始,进一步演变为使用runC和containerd。
Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意linux发行版Docker引擎上。程序时间互相隔离。
Docker的体系结构
Containerd:是一个简单的守护进程,使用runC容器管理。向Doker Engine提供接口
Shim:只负责管理一个容器
RunC:是一个轻量级的工具,用来运行容器。
1-2 Docker内部组件、虚拟机与容器区别
内部组件:
Namespaces:命名空间,linux内核提供的一种对进程资源隔离的机制,例如进程、网络、资源挂载点等。
CGroups:控制组,linux内核提供的一种限制进程资源的机制;例如CPU、内存等
UnionFS:联合文件系统,支持讲不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型。
虚拟机与容器的区别:
以KVM举例,与Docker对比
启动时间:
Docker秒级启动,KVM分钟级启动。
轻量级:
容器镜像大小通常以M为单位,虚拟机以G为单位。
容器资源占用小,要比虚拟机部署更快速。
性能:
容器共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,容器性能基本接近物理机。
虚拟机需要Hypervisor层支持,虚拟化一块设备,具有完整的OS系统,虚拟化开销大,因而降低性能。
安全性:
由于共享宿主机内核,只能进程级隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一定安全隐患。
1-3 linux安装Docker
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker软件包源
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo vi /etc/yum.repos.d/docker-ce.repo [docker-ce-stable] gpgcheck=0 #改成0。信任源,不对它的rpm检查
更新yum包索引
yum makecache fast
安装Docker CE
yum -y install docker-ce
启动Docker/卸载
systemctl start docker 卸载: yum remove docker-ce rm -rf /var/lib/docker