从下图可以看出,VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。
Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。
由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。
但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多;Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
1、image镜像
2、container容器
3、repostory仓库
仓库是集中存储镜像文件的沧桑,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)
仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。
1、更快速的交付和部署
2、更高效的虚拟化
3、更轻松的迁移和扩展
4、更简单的管理
在这个架构图中,可以看到docker的重要组件。
1、用户使用Docker Client客户端与Docker Daemon守护进程建立通信,并发送自己的一些请求给后者。
2、Docker Daemon 首先提供Server的功能接受Docker Client 的请求,docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。
3、在Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动 graphdriver 将下载镜像以Graph的形式存储。当需要为Docker创建网络环境时,通过网络管理驱动 networkdriver 创建并配置Docker容器网络环境;当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver来完成。
而libcontainer是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作。当执行完运行容器的命令后,一个实际的Docker容器就处于运行状态,该容器拥有独立的文件系统,独立并且安全的运行环境等。
1、关闭防火墙,设置开机不启动
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置阿里云docker镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装Docker-CE,开启docker服务并设置开机自启
yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service
直接下载镜像,速度很慢,而一般镜像有比较大,所以我们进行镜像加速,使用阿里云的源,即开启阿里云的镜像加速
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6fr2rj44.mirror.aliyuncs.com"]
}
EOF
//加载daemon进程,重启服务
systemctl daemon-reload
systemctl restart docker
开启路由转发
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker
到这里,我们的docker安装优化已经完成!
下一篇博客将继续docker的学习。