docker是什么?
docker是一种轻量级的虚拟化技术,是一种应用级别的封装。
运行组件
Docker 镜像(Images) |
Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
Docker 容器(Container) |
容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
Docker 客户端(Client) |
Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。 |
Docker 主机(Host) |
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker Registry |
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 |
Docker Machine |
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
大致运行逻辑or执行流程
根据已有镜像去创建一个容器
1、由客户端docker-client(一般就是命令行窗口)连接上本地或远程的docker-daemon,他负责做事
2、daemon现在本地寻找镜像发现没有,然后到docker hub仓库寻找镜像并返回,默认拉取最新的镜像
3、还是daemon根据拉取过来的镜像生成一个容器,在容器中就可以资源隔离(具体隔离哪些见下文)地运行应用了。镜像image和容器的概念相当于java中的类和对象的关系,是一种模板和实例化的方式。
4、最后将容器信息返回到客户端。
与虚拟机的区别?
有个很大的区别就是虚拟机是独享自己的操作系统,而容器是多个容器共享一个操作系统,这就要求容器应用对应的操作系统得是一样的,优点是容器的所需空间比虚拟机小得多。
所以相较于虚拟机,docker容器的优势是小巧、易迁移部署、运行高效。缺点是隔离性不够强,而且docker管理进程可以看到所有容器的相关信息。
原文:https://www.cnblogs.com/karbon/p/14451545.html