docker容器和仓库的区别是什么
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,每个容器内运行一个应用,不同的容器相互隔离,容器之间不会有任何接口(类似 iPhone 的 app),容器之间也可以建立通信机制。更重要的是容器性能开销极低。容器的创建和停止都十分快速,容器自身对资源的需求也十分有限。
Docker 引擎的基础是 Linux 容器(Linux Containers, LXC)技术。
Docker 镜像
Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向 Docker 引擎的只读的模板。包含了文件系统。
例如:一个镜像可以只包含一个完整的 Ubuntu 操作系统环境,可以把它称为一个 Ubuntu 镜像。镜像里面仅安装了 Apache 应用程序(或用户需要的其他软件)。可以把它称为一个 Apache 镜像。
镜像是创建 Docker 容器的基础。通过版本管理和增量的文件系统,Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
Docker 容器
Docker容器(Container)类似于一个轻量级的沙箱,Docker 利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
可以把容器看做是一个简易版的 Linux 系统环境 (包括 root 用户权限、进程空间、用户空间和网络空间等) 以及运行在其中的应用程序打包而成的盒子。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
Docker 仓库
Docker仓库(Repository)类似于代码仓库,它是 Docker 集中存放镜像文件的场所。
有时候会看到有资料将 Docker 仓库和仓库注册服务器 (Registry) 混为一谈,并不严格区分。实际上,仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签 (tag) 来进行区分。
例如存放 Ubuntu 操作系统镜像的仓库称为 Ubuntu 仓库,其中可能包括 14.04、12.04 等不同版本的镜像。
根据所存储的镜像公开分享与否,Docker 仓库可以分为公开仓库 (Public) 和私有仓库 (Private) 两种形式。
目前,最大的公开仓库是官方提供的 Docker Hub,其中存放了数量庞大的镜像供用户下载。国内不少云服务提供商 (如时速云、阿里云等) 也提供了仓库的本地源,可以提供稳定的国内访问。
当然,用户如果不希望公开分享自己的镜像文件,Docker 也支持用户在本地网络内创建一个只能自己访问的私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上 pull 下来就可以了。
镜像、容器、仓库的区别
docker 镜像(Images)
一个只读模板,可以用来创建容器,一个镜像可以创建多个容器;
Docker 提供了一个很简单的机制来创建和更新现有的镜像,甚至可以直接从其他人那里获取做好的镜像直接使用;
可以理解为 Java 中的类;
docker 容器(Container)
容器是从镜像创建的运行实例,也就是镜像启动后的一个实例称为容器,是独立运行的一个或一组应用;
Docker 利用容器来运行应用,他可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台;
可以把容器看做是一个简易版的 Linux(包括 root 用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序;
可以理解为 Java 中通过类创建的实例;
docker 仓库(Resoisitory)
仓库是集中存放镜像文件的场所,类似 git 代码仓库等;
仓库(Respository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器一般存放多个仓库,每个仓库又有多个镜像,每个镜像又有不同的标签 tag;
仓库分为公开仓库(public)和私有仓库(private)两种形式;
最大的公开仓库是 Docker Hub,国内的公开仓库有阿里云等;
可以在本地网络创建一个私有仓库;
当创建好自己的镜像后,可以通过 push 命令把它上传到公开或私有仓库;
仓库的概念类似 Git,仓库注册服务器可以理解为 GitHub 这种托管服务;
docker 主机(Host)
一个物理或虚拟的机器用来执行 Docker 守护进程和容器。
docker客户端(Client)
客户端通过命令行或其他工具使用 Docker。
转载请注明:IT运维空间 » 运维技术 » docker容器和仓库的区别是什么
发表评论