Docker概览
docker是一个开发,运输,承载应用的开源平台。docker能够将一个大型项目的各个模块独立,各模块独立也就意味着传送独立、部署独立、环境独立、测试独立,为开发大型项目提供了极大的方便。
docker允许在一个约束少、独立的环境中对应用打包和运行,该环境叫做容器。docker的独立性和安全性允许多个容器在一个给定的主机上同时运行。容器中的环境和主机中的环境是彼此独立的,且容器可以传输和分享。
Docker架构
docker使用客户-服务器的架构,服务器完成构建、运行、分发容器的工作;客户和服务器可以在同一台主机上进行工作,也可以通过远程链接,在各自的主机上工作。
Docker术语
-
The Docker daemon(dockerd)
可以看做客户-服务器架构中的服务器,daemon听取docker api请求,并管理docker的对象,比如图像(images),容器(containers),网络(network),容积(volumes)。daemon可以与其他daemon交流,以管理docker服务 -
The Docker client(docker)
可以看做客户-服务器架构中的客户,也是docker用户交互的主要方式。当docker用户使用命令docker run
时,客户发送这些命令到dockerd。客户能与多个daemon进行交流 -
Docker registries(registry)
保存docker image的地方,Docker Hub是一个任何人都可以公开登记的地方,且在docker上拉取image时如非指定,默认从Docker Hub上拉取。支持私人登记。
当使用命令docker pull
或docker run
时,对应的镜像将从配置好的登记处拉取。当使用docker push
命令时,image将会被推送到配置好的登记处。 -
Docker objects
使用docker过程中涉及的images,containers,networks,volumes,plugins和其他对象均属于docker的对象范围Docker images(镜像)
image是一个只读的模板,带有创建container的指令。通常,一个image是基于另一个image,有可能需要安装一些额外的内容。比如,当你构建基于ubuntu的image时,仍然需要安装Apache网页服务器和应用等。
可以使用自己的image,也可以使用别人在登记处公开的image。
创建自己的image,需要创建一个包含简单语法的Dockerfile,这些语法定义了创建和运行image的步骤。Dockerfile中的每一条指令在image中创建一个层(layer)。当改变Dockerfile,重建image时,只有那些修改过的层会被重建。
image包含容器的文件系统,也包含了运行应用程序所需的一切——依赖、配置、脚本、二进制文件等。Docker containers(容器)
container是image的可执行实例,可以使用Docker API或CLI创建,启动,停止,移动,删除一个container;也可以将一个container链接到另一个或多个网络,赋予其存储,或者创建一个基于它当前状态的image
默认情况下,container之间是相对隔离的。用户可以控制container之间的网络,存储,或者其他来自其他container或主机的子系统。
container是由它所属的image和用户个人配置所定义,因此当一个container被移除,任何对该状态作的改变会消失,因为没有保存在存储中。
container可以在本地机器、虚拟机上运行,也可以部署到云端;是可移植的。
container使用隔离的文件系统,彼此隔离并运行自己的软件、二进制文件和配置。
通过仓库分享image
通过网络仓库的方式分享已创建的Docker images,需要使用到Docker registry。默认的registry是Docker Hub。
- 第一步:创建Docker Hub账号
如果已经有可以跳过。创建链接:创建Docker Hub账号
经过邮箱验证后得到界面:
- 第二步:创建repository
点击第一步页面中“Create a Repository”,创建一个仓库。根据存储库名字要求创建一个存储库即可。