docker
Docker
本文
Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。
Docker框架client:提供用户跟Docker交互的入口,可以通过client跟docker发送各种API
docker damon:用于监听并处理docker client发送的api请求并且管理docker镜像(images), 容器(container)以及文件结构。同时也用于跟其它docker daemon进行交互
Registry:docker存储镜像的仓库。Docker Hub是一个公共仓库,类似与maven的中心仓库,默认情况下docker会从该公共仓库获取镜像。当然docker也可以像maven一样有自己的私有registry
image:和container都是docker的对象。 docker image主要定义docker容器执行指令的模板。可以把docker image比作是java的类,docker container比作的java的对象,docker的镜像通常都是在另一个image基础上构建的
container:和image都是docker的对象,container是docker镜像的运行实例,用户可以通过docker api对docker容器进行start/stop/create/move/delete等等操作
框架刨析
仓库(repository)
仓库(repository)的概念比较好理解,就是集中存放镜像文件的场所,本文开头写的就是docker官方的仓库地址,里面有常用的docker镜像,如nginx、redis 等等。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 时速云 、网易云 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
容器(container)
Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器 = new 镜像()
镜像(image)
Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
常用命令
上图最左边的client端就是命令的入口