学习是一辈子的事情,架构的学习,如果有一幅简明扼要的图,那么我们学习起来会事半功倍。
从上面的图可以看出,docker主要分为三个部分:Docker Client, Docker Host, Docker Registry
Docker Host
首先我们看看Docker Host, 它包括三个部分,分别是Docker守护进程——Docker daemon,Docker镜像——Docker Images,Docker容器——Docker Container;
Docker daemon
Docker守护进程,有的地方也称为Docker引擎——Docker Engine。它的作用类似于黑社会的大boss,主要运行在后台,管理着Docker的镜像,Docker的容器,Docker的网络以及Docker的存储卷。Docker可以与其他守护进程一起管理Docker的服务,对外暴露一些RestAPI,其他守护进程或者命令客户端可以通过这些API与它通信。
Docker Images
Docker镜像是一个只读模板,模板包含创建Docker容器的说明。这里可以类比我们编程时候的类与实例之间的关系。镜像对应着类和容器对应着实例。学习Docker镜像应该从三个方面入手:
- Docker镜像可以重用和继承。
- Docker镜像的命令如何使用。
- Docker镜像如何构建。
这里我们展开来说,比如有一个CentOS基础镜像,包含Java8+Maven+Tomcat;如果我现在的需求是增加一个redis,那么我可以将redis添加到这个基础镜像,然后重新构建一个新的镜像,所以说镜像是可重用和继承的。
构建镜像的方法是通过一个Dockerfile的文件进行构建,此文件包含一些构建镜像的说明和命令,然后通过docker build . 进行构建。
想要知道docker镜像的一些基本命令,可以通过 docker images --help
Docker Container
Docker容器是一个运行的Docker镜像实例。学习Docker容器也需要从两方面入手:
- 基本的Docker容器命令使用
- 向Docker容器传递参数或者配置Dockerfile文件,让运行的Docker对外暴露端口以及与其他容器通信,配置存储卷等
要想知道docker容器的一些基本命令,可以通过docker container --help
从上面我们可以简单的看出一些启动容器,停止容器,移动容器,删除容器等,这些是我们未来学习的重点。
最后总结一些什么是Docker主机,所谓Docker主机就是Docker安装的那台物理机器。Docker主机由Docker守护进程,Docker镜像,Docker容器,网络以及存储组成。
Docker Client– Docker CLI
Docker客户端使用Docker命令行与Docker守护进程进行通信。前面我们使用的命令都是客户端通过RestAPI接口与Docker守护进程进行通信的例子。Docker客户端可以同超过一个以上的守护进程进行通信。
Docker Registry
Docker注册中心可以理解为存储Docker镜像的*仓库。这个很好理解,Maven*仓库是存储jar包,而Docker*仓库是存储镜像的。
Docker-Compose
从字面意思理解是Docker组合,猜想就是一个管理多个docker的啥东西。其实它的作用是定义和运行多容器的docker应用程序。这里记住一个命令:
docker-compose --help
以及一个文件:
docker-compose.yml
文件内容定义容器,命令用来运行和管理容器。
还有其他一些组件,比如Docker Machine 和 Docker Swarm Mode 等,我们需要使用的时候才详细介绍。