一.docker简介
1、docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样。你可以把“Hello World!”放到docker中,也可以把网站放到docker中,你可以把任何你想到的程序放到docker中。
2、docker思想:
(1)集装箱
(2)标准化 (运输方式、存储方式、API接口)
运输方式(docker鲸鱼负责运输)
存储方式(不用关心存在哪,存在哪个盘)
API接口的标准化:Docker提供了一系列的RESTFUL API接口,包含了对Docker也就是对应用的控制,其中包括停止 查看 删除等等
(3)隔离:
最底层的技术实际上是一种linux的一种内核的限制机制,叫做LXC,LXC是一种轻量级的容器虚拟化技术,最大效率的隔离了进程和资源,通过cgroup namespace等限制隔离进程组所使用的物理资源,如CPU I/O Memory等等。
3、docker解决的问题
(1)docker解决了运行环境不一致带来的问题
(2)docker隔离性,每台服务器相互隔离,互不影响,可以保证自己运行的程序不受其他程序的影响。
(3)一键化部署服务器(例如双11,服务器数量。。。),docker的标准化让快速扩展,弹性伸缩变得简单。
4、docker的构成
(1)Build - 构建镜像 - [镜像 类比 集装箱] :
docker镜像就是image。从本质上来说镜像就是一系列的文件(包括应用程序的文件,也包括应用环境的文件),以联合文件系统分层的形式保存到本地;docker中的文件系统都是只读的。
(2)Ship - 运输镜像(从仓库和我们的主机上运输)- [仓库 类比 超级码头] :
构建镜像的目的:是为了在其他的服务器,其他的环境运行我们的程序。(为了在其他地方运行,我们就需要将构建的镜像传递到目的地才可以,仓库可以起到传输传递作用。)
传输过程:先将构建的镜像传到docker仓库中,再由目的地去docker仓库将我们的镜像拉过去,这样就完成了传输过程。
docker仓库的提供者:中央服务器
中央服务器地址:hub.docker.com(国际)、c.163.com(国内)
(3)Run - 运行镜像(运行的镜像就是一个容器)- [容器 就是 运行程序的地方] :
Docker容器的本质是一个进程。Docker镜像的每一层都是只读的,而容器作为最上层,是可读可写的。如果程序需要对镜像进行修改,那么Docker会把要修改的镜像文件拷贝到最上层的容器中,然后再进行修改。往后对该文件的访问会优先从容器中读取,寻找文件的顺序是从下往下。
Docker 运行过程: 去仓库把镜像拉倒本地,然后用一条命令把镜像运行起来变成容器!
5.docker的运行流程
docker执行流程:
(1)docker pull:首先客户端client向Docker daemon发送