Docker本身是一个容器运行载体或称之为管理引擎,基于Go语言开发的。我们把应用程序和配置依赖打包好,形成一个可交付的运行环境,这个打包好的运行环境,就是image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器实例,同一个镜像文件,可以生成多个同时运行的容器实例。
Docker的三要素:镜像image,容器container,仓库repository
| 概念 | 说明 |
|---|---|
|
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。 |
image文件生成的容器实例,本身也是一个文件,称之为镜像文件。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。镜像就是Java里的类,而容器就是类的实例化对象,每个容器就是每个实例。
至于仓库,就是放着很多镜像的地方,类似maven的仓库,我们可以把镜像发布到仓库中,需要的时候,从仓库里拉下来就可以了。
Docker利用容器独立运行一个或者一组应用,容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。Docker可以让开发者打包他们的应用以及应用的runtime环境,这个包很轻量级、可移植,发布到任何Linux机器上,也可以实现虚拟化。
容器其实就是一个精简版的Linux环境(包括root用户权限,进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
Docker安装要求:Centos的安装,支持centos7(64bit)或者 centos 6.5(64bit)或更高版本。
Docker的应用场景:
1.web应用自动化打包和发布
2.自动化测试和持续集成、发布
3.在服务型环境中部署和调整数据库或者其他后台应用