一 什么是 docker ?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(百度百科介绍)
二 为什么要用docker ?
1.在软件开发中,最麻烦的事情之一就是环境配置。在正常情况下,如果要保证程序能运行,我们需要设置好操作系统,以及各种库和组件的安装。
2.举例来说,要运行一个java程序,计算机必须要安装JDK、maven、Tomcat、mysql等等软件和环境变量。如果服务器需要水平拓展很多台,那么光是每台服务器配置这些环境,就能直接让人崩溃。
docker的出现,就是解决了上面的痛点。
三 docker 主要用途
- 提供一次性的环境:本地测试别人的软件、持续集成的时候提供单元测试和构建的环境。
- 提供弹性的云服务:因为Docker容器可以随时启动或关闭,所以非常适合动态规划和缩容。
- 组建微服务构架:通过多个容器,服务的部署能更加灵活,帮助实现微服务构架。
四 docker 三大组成要素
镜像:Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器。
容器:镜像创建的运行实例,Docker利用容器来运行应用。每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。
镜像仓库:集中存放镜像文件的地方。用户创建完镜像后,可以将其上传到公共仓库或者私有仓库,需要在另一台主机上使用该镜像时,只需要从仓库上下载即可。
五 docker运行流程
5.1 Docker客户端
用于和Docker守护进程(Docker Daemon)建立通信的客户端。Docker客户端只需要向Docker服务器或者守护进程发出请求(Docker构建、Docker拉取和Docker启动等指令),服务器或者守护进程将完成所有工作并返回结果。
如橙色流程所示,执行Docker构建指令会根据Docker文件构建一个镜像存放于本地Docker主机。
如蓝色流程所示,执行Docker拉取指令会从云端镜像仓库拉取镜像至本地Docker主机或将本地镜像推送至远端镜像仓库。
如黑色流程所示,执行Docker启动指令会将镜像安装至容器并启动容器。
5.2 Docker主机
一个物理或者虚拟的机器用于执行 Docker守护进程和容器。
5.3 Docker守护进程
接收并处理Docker客户端发送的请求,监测Docker API的请求和管理Docker对象,比如镜像、容器、网络和数据卷。