1.docker:一个能够把开发的应用程序自动部署到容器的开源引擎。
这个引擎的目标是提供一个轻量,快速的环境,能够运行开发者的程序,并方便高效的将程序从开发者的笔记本部署到测试环境,生产环境。
2.容器是直接运行在操作系统内核之上的用户空间
容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。
这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去
容器和宿主机隔离很彻底,有独立的网络,存储栈,还有拥有自己的资源管理能力,使得同一个宿主机中的多个容器可以友好共存。
Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;
而Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙
容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”.
容器的本质是一种特殊的进程
3.docker组件:
1).docker的客户端和服务器,也称为docker引擎
使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
2).docker镜像
构建docker的基石,基于镜像运行容器,镜像是基于union文件系统的一种层式结构,由指令一步一步构建出来。可以把镜像当作容器的源代码。
挂载在容器根目录上,用来为容器进程提供隔离后执行环境的的文件系统,就是所谓的“容器镜像”。它还有一个更为专业的名字叫作:rootfs(根文件系统)
3).registry
docker用registry保存用户构建的镜像,docker hub就是docker公司运营的公共registry
4).docker容器
docker可以帮用户构建和部署容器,容器是基于镜像启动的,容器中可以运行1个或多个进程
镜像是docker生命周期的构建和打包阶段,容器是启动或执行阶段
4.docker能做啥?
容器可以为各种测试提供很好的沙盒环境
1).加速本地开发和构建流程,使其更加高效和轻量化,本地开发人员可以构建运行和分享docker容器,容器可以在开发环境中构建,然后轻松的提交到测试环境中,最终进入生产环境
2).能够让独立服务或应用程序在不同的环境中,得到相同的运行结果
3).用docker创建隔离的环境进行测试
4).docker可以让开发者先在本机上构建一个复杂的程序或者架构进行测试,而不是一开始就在生产环境部署,测试
5.docker的技术组件
docker可以运行在任何安装了Linux内核的x64主机
它包括以下几个部分:
1).一个原生的linux容器格式,docker中称为libcontainer
2).linux内核的命名空间Namespace,用于隔离文件系统,进程,网络,用来修改进程视图的主要方法
3).文件系统隔离,每个容器都有自己的root文件系统
4).进程隔离,每个容器都运行在自己的进程环境中
5).网络隔离:容器间的虚拟网络接口和ip地址都是分开的
6).资源隔离和分组:使用cgroup(control group)将cpu和内存之类的资源独立分配给每个docker容器,用来制造约束的主要手段
7).写时复制:文件系统都是通过写时复制创建的,意味着文件系统是分层的,快速的,而且占用磁盘空间更小
8).日志:容器产生的stdout,stderr和stdin这些IO流都会被记录入日志,用来进行日志分析和故障排错
9).交互式shell:用户可以创建一个伪tty终端,将其连接到stdin,为容器提供一个交互式的shell
6.在centos 安装docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
通过 uname -r 命令查看你当前的内核版本
[root@VM_0_7_centos data]# uname -r
3.10.0-862.el7.x86_64
1、使用 sudo 或 root 权限登录 Centos。
2、确保 yum 包更新到最新。
$ sudo yum update
3、执行 Docker 安装脚本。
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
执行这个脚本会添加 docker.repo 源并安装 Docker。
4、启动 Docker 进程。
sudo systemctl start docker
5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。
$ sudo docker run hello-world docker ps
至此,安装完成(亲测有效哦)