【云原生】Docker介绍

简介: 通俗来讲,docker是一个类似于虚拟机的容器,这个容器里面可以放应用程序,代码库,编译工具以及构建运行环境。容器轻量可移植,以后发布程序直接发布docker就行,从源主机搬运整个docker到目标机上,即完成了程序发布,省去了重新构建运行环境的复杂过程和时间。

1. Docker简介

1.1 Docker定义

Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 能够将应用程序与基础架构分离,以便快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础架构。通过利用 Docker 快速交付、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行之间的延迟。
通俗来讲,docker是一个类似于虚拟机的容器,这个容器里面可以放应用程序,代码库,编译工具以及构建运行环境。容器轻量可移植,以后发布程序直接发布docker就行,从源主机搬运整个docker到目标机上,即完成了程序发布,省去了重新构建运行环境的复杂过程和时间。容器完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。隔离和安全性允许您在给定主机上同时运行多个容器。

Docker 提供工具和平台来管理容器的生命周期:

  • 使用容器开发应用程序及其支持组件。
  • 容器成为分发和测试应用程序的单元。
  • 准备就绪后,将应用程序部署到生产环境中,作为容器或编排的服务。无论生产环境是本地数据中心、云提供商还是两者的混合,这都是一样的。

1.2 Docker功能

快速迭代应用程序
Docker 容器为开发人员和测试人员提供了统一的运行环境和应用程序,通过容器迁移带来的标准化环境简化了开发生命周期,容器非常适合持续集成、持续交付和持续测试工作流程,也就是devpos。

便捷部署和扩展
Docker 基于容器的平台允许高度可移植的工作负载。Docker 容器可以在开发人员的本地电脑、公司服务器或者虚拟机、云主机等环境运行。
Docker 的可移植性和轻量级特性还使得动态管理工作负载、根据业务需求近乎实时地扩展或拆除应用程序和服务变得容易。

在同一设备上运行多个容器
Docker 轻量而快速,它比虚拟机所需的硬件资源要少的多,因此它可以为经济高效的替代虚拟机,同时在一台设备上可以运行多个容器,节省开销。

1.3 Docker应用范围

Docker 容器无处不在:Linux、Windows、数据中心、云、无服务器等。
在这里插入图片描述

Docker 容器技术于 2013 年作为开源Docker Engine推出。
它利用了围绕容器的现有计算概念,特别是在 Linux 中,称为 cgroups 和命名空间的原语。Docker 的技术是独一无二的,因为它关注开发人员和系统运营商将应用程序依赖项与基础设施分离的要求。
Linux的成功推动了与 Microsoft 的合作,将 Docker 容器及其功能引入了 Windows Server。
Docker 及其开源项目提供的技术,Moby 已被所有主要数据中心供应商和云提供商所利用。这些提供商中许多都将 Docker 用于其容器原生 IaaS 产品。此外,领先的开源无服务器框架利用 Docker 容器技术。

2. 容器与虚拟机

容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件。容器更便携、更高效。

容器
在这里插入图片描述

容器是应用层的抽象,它将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。与 VM 相比,容器占用的空间更少(容器映像的大小通常为数十 MB),可以处理更多应用程序并且需要更少的 VM 和操作系统。

虚拟机

在这里插入图片描述

虚拟机 (VM) 是物理硬件的抽象,可将一台服务器变成多台服务器。管理程序允许多个虚拟机在单台机器上运行。每个 VM 都包含操作系统、应用程序、必要的二进制文件和库的完整副本占用数十 GB。VM 的启动速度也可能很慢。

3. Docker结构

3.1 Docker 架构

Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许使用由一组容器组成的应用程序。
在这里插入图片描述

  • Host(主机):安装了Docker程序的机器(Docker直接安装在操作系统之上)。
  • Client(客户端):连接docker主机进行操作。
  • Registry(仓库):用来保存各种打包好的软件镜像。
  • Images(镜像):软件打包好的镜像,放在docker仓库中。
  • Container(容器):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用。

3.2 Docker三要素

Docker 包括三个基本要素:

  • 镜像(Image):镜像是用于创建容器的只读模板,通过Docker build命令创建,镜像相当于一个 root 文件系统。镜像就是静态的模板,运行起来的镜像就是容器。
  • 容器(Container):容器是镜像的实例,一个镜像可以创建多个容器,镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器可类比一个简易的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。
  • 仓库(Repository):仓库用来存储Docker镜像,可自建私有Registry和使用公用Registry。官方公用仓库为dockerhub(https://hub.docker.com),镜像的安全性和可靠性比较有保障。
相关文章
|
2月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
108 2
|
2月前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
3月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
95 5
|
2月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
2月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
57 3
|
3月前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
3月前
|
安全 Cloud Native Shell
云上攻防:云原生篇&Docker容器逃逸
本文介绍了Docker的基本概念及其对渗透测试的影响,重点讲解了容器逃逸的方法。Docker是一种轻量级的容器技术,与虚拟机相比,具有更高的便携性和资源利用率。然而,这也带来了安全风险,特别是容器逃逸问题。文章详细描述了三种常见的容器逃逸方法:不安全的配置、相关程序漏洞和内核漏洞,并提供了具体的检测和利用方法。此外,还介绍了几种特定的漏洞(如CVE-2019-5736和CVE-2020-15257)及其复现步骤,帮助读者更好地理解和应对这些安全威胁。
151 0
云上攻防:云原生篇&Docker容器逃逸
|
3月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
3月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
98 3