什么是Docker,它是如何工作的?- Docker的解释

452 阅读9分钟

什么是Docker,它是如何工作的?- Docker解释

如果你有一个应用程序或服务,并希望它能在不同的系统上工作,如VPS或专用机,没有任何问题,考虑使用容器。最受欢迎的容器平台之一是Docker,尽管不是每个人都知道它是什么以及它是如何工作的。

在本教程中,我们将解释什么是Docker,它是如何工作的,以及它与虚拟机(VM)和系统,如Kubernetes和Jenkins有什么不同。我们还将介绍Docker的优点和缺点,并列出其最受欢迎的使用案例。 下载完整的Linux命令小抄

  • 什么是Docker?
  • Docker与虚拟机
  • Docker vs Kubernetes和Jenkins
    • Kubernetes与Docker的比较
    • Docker与Jenkins的比较
  • 了解Docker容器
    • 什么是Docker容器?
    • Docker是如何工作的?
  • Docker的优点和缺点
    • Docker的优势
    • Docker的缺点
  • Docker使用案例
    • Docker vs Docker Engine
    • Docker社区版与企业版
    • Docker难学吗?

什么是Docker?

Docker是一种开源软件,用于在虚拟容器内部署应用程序。容器化允许各种应用程序在不同的复杂环境中工作。例如,Docker允许在Windows、Linux和macOS系统上运行WordPress内容管理系统而没有任何问题。

Docker与虚拟机

虽然Docker和虚拟机的目的相似,但它们的性能、操作系统支持和可移植性有很大不同。

主要区别在于,Docker容器共享主机的操作系统,而虚拟机也有一个运行在主机系统之上的客户操作系统。这种操作方法会影响性能、硬件需求和操作系统支持。请查看下表,以进行深入比较。

Docker虚拟机
操作系统容器之间共享的操作系统每个虚拟机的新操作系统
安全性不太安全,因为操作系统和内核是共享的更安全,因为虚拟机不共享操作系统
性能方面即使有多个容器也能保持快速的性能更多的虚拟机等于更不稳定的性能
开机时间快速(秒)慢(分钟)
内存需求轻量级需要大量的内存
存储需求通常是兆字节通常是千兆字节
可移植性易于在不同的环境中部署很难将一个虚拟机移植到另一个系统

尽管Docker的容器技术在大多数方面都处于领先地位,但虚拟机更安全,因为操作系统是独立于硬件的。

Docker vs Kubernetes和Jenkins

在下一节中,我们将讨论Docker与Kubernetes和Jenkins的对比情况,并解释它们之间的差异。

Kubernetes与Docker的比较

Docker是一个构建和运行容器的平台,而Kubernetes是一个开源的容器编排系统。这两个系统不能直接比较--Docker负责创建容器,而Kubernetes负责大规模地管理它们。

然而,Docker提供了自己的协调系统,称为Docker Swarm。这里有一个表格,对Kubernetes和Docker Swarm进行了比较。

KubernetesDocker Swarm
安装困难和漫长简单而快速
可扩展性自动扩展不提供缩放功能
集群创建简单困难的
负载平衡手动自动
监测内置监控工具只支持第三方监控工具

Docker与Jenkins的比较

不可能将Jenkins和Docker进行比较,因为它们是完全不同目的的产品。

Jenkins是CI/CD(持续集成和持续交付)开发模式的核心自动化系统,在这种模式下,开发人员持续推送小块代码以防止合并错误。另一方面,Docker是一个容器化系统。

虽然这些系统不能相提并论,但你可以同时使用这两个系统以达到最佳效果。让Jenkins安排不同的任务,而Docker则在容器的帮助下将工作相互隔离。

了解Docker容器

使用Docker容器可以为用户省去排除系统之间可能存在的兼容性问题的麻烦。这是因为有了Docker,一个软件在所有环境中的运行是一样的。

什么是Docker容器?

Docker容器是一个软件包,具有运行一个特定应用程序所需的所有依赖性。所有的配置和启动或停止容器的指令都是由Docker镜像决定的。每当用户运行一个镜像时,就会创建一个新的容器。

在Docker API或命令行界面(CLI)的帮助下,管理容器很容易。如果需要多个容器,用户可以用Docker compose工具控制它们。

Docker是如何工作的?

Docker架构由四个主要部分组成,以及我们前面提到的Docker容器。

  • Docker客户端 - 创建、管理和运行容器化应用程序的主要组件。Docker客户端是通过命令提示符(Windows)或终端(macOS、Linux)等CLI控制Docker服务器的主要方法。
  • Docker服务器- 也被称为Docker守护进程。它等待由Docker客户端发出的REST API请求,并管理镜像和容器。
  • Docker镜像-- 指示Docker服务器关于如何创建Docker容器的要求。图像可以从Docker Hub等网站下载。创建一个自定义镜像也是可能的--要做到这一点,用户需要创建一个Docker文件,并将其传递给服务器。值得注意的是,Docker不会清除任何未使用的镜像,所以用户需要在镜像数据过多之前自己删除
  • Docker注册表 - 一个开源的服务器端应用程序,用于托管和分发Docker镜像。注册表对于在本地存储镜像并保持对它们的完全控制是额外有用的。另外,用户可以访问上述的Docker Hub--世界上最大的Docker镜像库。

专家提示

在Hostinger上使用Docker就像获得一个VPS并在你的Linux发行版(如Ubuntu或CentOS)上安装它一样容易。

Docker的优点和缺点

虽然Docker有很多优点,但它在某些方面确实存在不足。在本节中,我们将介绍该软件的主要优点和缺点。

Docker的优势

  • 可移植性--Docker的主要吸引力在于其可移植性。它允许用户在一台机器上制作或安装一个复杂的应用程序,并确保它能在机器上运行。Docker容器包括一个应用程序所需要的一切,几乎不需要用户的输入。
  • 自动化- 在cron作业和Docker容器的帮助下,用户可以轻松实现工作的自动化。自动化可以帮助开发者避免繁琐和重复的工作,也可以节省时间。
  • 社区--Docker有一个专门的Slack频道、社区论坛,在StackOverflow等开发者网站上有成千上万的贡献者。更重要的是,在Docker Hub上有超过900万个容器镜像托管。

Docker的缺点

  • 速度- 尽管通过Docker容器运行应用程序比在虚拟机上运行要快,但它仍然比在物理服务器上运行应用程序要慢得多。
  • 易用性- Docker不是为了运行需要图形用户界面(GUI)的应用程序。这意味着,用户需要熟悉命令行,并在那里执行所有的操作。陡峭的学习曲线、操作系统特定的注意事项和频繁的更新使掌握Docker成为挑战。即使你觉得你对Docker了如指掌,仍然需要考虑协调问题,这又增加了一个复杂的层次。
  • 安全性- Docker运行在主机的操作系统上。这意味着任何隐藏在容器中的恶意软件都可能找到它的方式进入主机。

专家提示

不要从未知来源下载Docker镜像,因为它们可能含有恶意软件。

Editor

埃吉迪尤斯-纳瓦尔达乌斯卡斯

网络安全主管

Docker使用案例

Docker有广泛的应用。在本节中,我们将介绍三种常见的Docker用例,并说明你如何从中受益。

尝试新软件

有了Docker,你就可以尝试新的软件,而无需手动安装。如果你需要快速准备好一个软件,Docker也很有用。例如,设置一个MySQL服务器是一个漫长而乏味的过程。有了Docker,只需要通过CLI的一条命令就可以完成。

了解CLI

尽管Docker可以在所有类型的机器上运行,但它主要是为Linux设计的。因此,我们建议在一个基于Linux的系统上设置它。这将为你提供一个很好的机会来学习更多关于系统管理、命令行界面和脚本的知识。

为了减少事故风险

在硬件故障的情况下,如果用户准备好了Docker镜像,就可以迅速恢复任何改变。他们只需要把镜像备份导入到新的机器上,剩下的就由Docker来完成。当开发人员由于错误或不兼容而想要回滚到特定软件的前一个版本时,Docker镜像备份也是有益的。

总结

开发一个应用程序是一个挑战,而确保它在每一个环境中都能运行是一个更大的里程碑。Docker容器解决了这个问题,为开发者提供了一种轻松移植软件的方法。

在这篇文章中,我们介绍了虚拟机和Docker之间的区别,解释了它是如何工作的,并将其与Kubernetes和Jenkins等流行系统进行了比较。我们还讨论了Docker的优点和缺点,并介绍了它的一些使用案例。

我们希望这篇文章能帮助你了解更多关于Docker的信息。如果你有任何问题或建议,请在下面的评论区告诉我们。

什么是Docker常见问题

Docker与Docker引擎

Docker是平台的名称,而Docker Engine是一种开源的容器技术,由Docker服务器(守护程序)、客户端和API组成。人们也可能将该软件与Docker客户端混淆,因为它也叫docker,只是用小写字母。

Docker社区版与企业版

Docker CE和EE是Docker的2个不同版本。前者是免费的,而后者是高级服务。两者提供相同的核心特性和功能,但在不同的操作系统上工作。如果你不是在创建大规模的软件,我们建议选择CE。

Docker难学吗?

掌握Docker可能需要一段时间,尽管启动你的第一个容器不会花很长时间。为了入门,Docker为其用户提供了一个易于使用的Docker桌面应用程序,并为初学者和中级用户提供了全面的文档