Docker 是一个开源的应用容器引擎,它利用操作系统级的虚拟化技术(如Linux上的命名空间和控制组)来创建和管理轻量级的、可移植的软件容器。这些容器能够在不同的主机之间无缝运行,并且具备一致的行为,因为它们包含了应用运行所需的所有依赖库、配置文件和服务。
Docker 的主要优势在于:
总结来说,容器侧重于高效利用资源、简化运维流程、加快部署速度,而虚拟机则强调高度隔离和兼容性。
主要包含三部分:
1. Docker Image
Docker Image 是 Docker 容器技术的核心组成部分,它是一个静态的、只读的模板,包含了运行一个应用程序所需的所有内容,包括代码、运行时库、环境变量和配置文件等。每个 Docker Image 都是基于上层镜像通过层层叠加的方式构建而成,并且每一层都是只读的。
Docker Image 的构建通常使用 Dockerfile
文件来定义,其中包含了创建镜像的具体步骤和依赖项。通过执行 docker build
命令,Docker 会根据 Dockerfile
中的指令逐步构建新的镜像层,最终生成一个新的 Docker Image。
每个 Docker Image 都有一个唯一的标识符(通常是哈希值),并可以被赋予一个标签(tag),例如:ubuntu:latest
或 myapp:v1.0
,便于管理和引用。
当需要运行一个容器时,用户会基于某个 Docker Image 创建一个新的容器实例。由于镜像是只读的,因此在启动容器时,Docker 会在镜像的基础上添加一个可写的容器层,这样既保留了原镜像的不变性,又允许在容器内进行临时数据写入和应用状态变更。
2. Docker Container (容器)
Docker Container(容器)是 Docker 技术的核心运行时实体,它是基于 Docker Image 创建的一个轻量级、独立的运行环境。容器提供了一种标准化的方式来打包和运行应用程序及其依赖,确保在任何支持 Docker 的环境中都能以一致的方式运行。
当您从一个 Docker Image 启动一个容器时,实际上是在系统上创建了一个与宿主机隔离的进程空间,并且这个空间内包含了运行应用所需的所有资源:代码、运行时库、配置文件以及一个精简版的操作系统内核(通常称为容器运行时)。尽管容器之间看起来像是各自运行在独立的操作系统中,但它们实际上共享宿主机的内核,从而实现了高效、轻量级的虚拟化。
3. Docker Registry (仓库)
Docker Registry 用于存储和分发 Docker 镜像,有公共和私有两种形式。公共的如 Docker Hub,私有的可以部署在本地或云端。开发人员可以将构建好的镜像推送到 Registry,然后在其他环境中从 Registry 拉取镜像,以便在多个环境中保持一致性和便利性。
Docker使用client-server 架构。组成包含 Docker Client
、Docker Daemon
与 Docker Registry
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。