Docker的基本概念

简介: Docker的基本概念

一、Docker 技术介绍


1、Docker 简介


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。479d81d70451c438ab85c8a57a70554.png


Docker 的开源项目诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc 。


2、虚拟化技术

在计算机技术中,虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。


3、Docker 优势

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

具体说来,Docker 在如下几个方面具有较大的优势:

更快速的交付和部署: Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间;

更高效的虚拟化:Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率;

更轻松的迁移和扩展:Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个;

更简单的管理:使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。


二、Docker 的基本概念


1、Docker 组成部分


Docker 的架构图:

一个完整的 Docker 主要由以下几部分构成:

967ac1c1f4c10cba07f6767083a30fb.png

2、Docker 镜像

Linux 操作系统包括 Linux 内核和用户空间两部分,当 Linux 系统启动后,会挂载 root 文件系统为其提供用户空间支持。Docker 镜像就类似于这样一个 root 文件系统,Docker 镜像中含有启动容器所需要的文件系统及所需内容,因此镜像主要用于创建并启动 Docker 容器。

Docker 镜像里包含一层层的文件系统,叫做 Union File System(Union FS,联合文件系统)。联合文件系统可以将多个目录挂载到一起,从而形成一整个虚拟文件系统,该虚拟文件系统的目录结构就像是普通的 Linux 目录结构一样。Docker 通过这些文件系统,再加上宿主机的内核就构成了一个 Linux 的虚拟环境。

在联合文件系统中,每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置只读(readonly)、读写(readwrite)和写出(writeout-able)三种权限。

但是 Docker 镜像中每一层的文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做了一层的修改,增加了一层文件系统,这样一层一层的网上叠加,上层的修改会覆盖底层该位置的可见性。当我们使用镜像的时候,只会看到一个完整的整体,而不知道也无需知道里面有几层文件系统。


3、Docker 容器

Docker 容器就相当于从模板复制过来运行时的实例,Docker 容器可以被创建、复制、暂停和删除等。每一个 Docker 容器在运行时都是以镜像为基础层,并在镜像的基础上创建当前容器的存储层,容器存储层的生存周期与容器是一致的,因此当某一个容器删除后,该容器存储层的数据也会随之被删除掉。


4、Docker仓库

Docker 仓库是一个集中存储、分发 Docker 镜像的仓库,客户端的 docker pull 和 docker push 命令都是直接与 Docker 仓库发生交互的。

一个 Docker 仓库可以包含多个仓库,每个仓库可以包含多个标签,这些标签对应每一个镜像。一般情况下,一个仓库可能会包含同一个软件的不同版本(例如 Nginx 1.18 和 1.20 版本等)镜像,标签就类似于该软件的不容版本,客户端可以通过 <仓库名>:<标签> 的格式来指定具体版本的软件镜像,如不指定,默认会以 latest 作为标签。

按照镜像是否公开,Docker 仓库可分为公共仓库和私有仓库两种。Docker hub 作为 Docker 官方的公共仓库,已经保存了大量的常用镜像,可以方便用户直接使用;如果不想使用公共仓库,也可使用 Image registry 这一 Docker 官方提供的私有仓库部署工具。


相关文章
|
6月前
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
426 2
|
6月前
|
存储 持续交付 Docker
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
97 0
|
3月前
|
Ubuntu NoSQL Linux
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
这篇文章详细介绍了Docker的基本使用,包括Docker的安装、常用命令、架构概念等,并通过图解和实践帮助读者快速掌握Docker的使用方法。
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
|
3月前
|
Linux 持续交付 虚拟化
在Linux中,Docker和容器虚拟概念是什么?
在Linux中,Docker和容器虚拟概念是什么?
|
3月前
|
监控 安全 Linux
Docker——基础概念与操作
Docker——基础概念与操作
43 0
|
5月前
|
Java Linux Shell
Docker核心概念与使用
Docker学习笔记和总结,涵盖了Docker的核心概念、基本操作和实战应用。
130 10
|
5月前
|
存储 运维 持续交付
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
64 0
|
6月前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
6月前
|
存储 运维 数据中心
Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
Docker是容器化技术,基于镜像(只读模板)创建可移植的容器,确保应用及其服务在隔离环境中运行。其优势包括快速部署(整个应用打包一次部署)、跨平台兼容、统一运行环境、资源隔离和简化依赖管理。Docker在开发和运维中都发挥作用,助力高效测试、部署和提升生产稳定性。
174 3
|
6月前
|
前端开发 Ubuntu 开发者
【Docker系列】Docker-核心概念/常用命令与项目部署实践
【4月更文挑战第1天】 Docker是容器化技术,打包应用及依赖,实现快速部署。核心概念包括镜像、容器和仓库。镜像是只读模板,容器是镜像运行实例,仓库用于存储和分发镜像。常用命令如`docker search`、`docker pull`、`docker images`、`docker ps`等。安装Docker在Ubuntu上涉及`apt-get update`、`install docker-ce`等步骤。了解这些基础,开发者能更高效地部署和管理应用。Docker简化了环境配置,增强了软件的可移植性和扩展性,是现代开发的必备技能。
544 3