
开发应用程序通常涉及管理复杂的数据库、编程语言、框架、依赖关系等。此外,在与不同的操作系统(OSs)合作时,你可能会面临兼容性问题。这些变量中的每一个都会对你的工作流程产生负面影响。
为了解决这些问题,你可以开始使用Docker。这个工具使你能够在容器化环境中构建和管理应用程序。最终,Docker可以消除许多复杂的配置任务,使开发更容易、更有效率。
在这篇文章中,我们将回答 “什么是Docker?”这个问题,并解释它是如何工作的。然后,我们将向你展示它的一些主要用例,以及作为一个初学者如何开始使用。
那么,究竟是什么?它是一个在沙盒中开发应用程序的开源平台。它的轻量级虚拟化环境也被称为容器:

Docker
虽然容器就已经存在,但Docker让它们变得更加容易使用。使用Docker,开发人员可以在本地或生产服务器上构建、测试和部署他们的应用程序。
自2014年Docker 1.0发布以来,它已经为个人开发者和公司规范了容器的使用。现在,它有超过1300万用户,包括Netflix、Target和Adobe等大公司:

使用Docker的企业
另外,Docker的采用率正在逐年增加。根据的数据,近25%的公司已经开始使用Docker来监控其应用程序。自2015年以来,这一比例每年都在增长3到5个百分点:

越来越多的公司使用Docker(来源:)。
我们可以看到,Docker已经成为开发和部署应用程序的流行平台。为了进一步了解它的受欢迎程度,让我们深入了解Docker软件的工作原理。
在Docker中,你可以将一个应用程序打包成一个标准化的单元,可用于软件开发。这个单元,或称容器,包括应用程序的编码和依赖性,这样它就可以轻松地在任何计算环境中运行。
在Docker之前,公司经常使用虚拟机(VM)来运行应用程序。这些可以模拟物理计算机,使开发人员能够将一台服务器变成多台服务器。然而,这种 *** 会有一些缺点。
每个虚拟机包含操作系统和应用程序的完整副本,以及必要的二进制文件和库。这些文件可能会在一台电脑上占用几十GB的空间。此外,为客户操作系统虚拟化硬件可能需要大量的开销。
容器代替了对硬件的虚拟化,对操作系统进行了虚拟化。在Docker中,容器是应用层的抽象,可以包含代码和依赖关系。在同一台机器上,多个容器可以作为孤立的进程运行:

Docker和虚拟机的比较(来源:)。
因此,Docker容器通常占用的空间较小。它们还可以包含更多的应用程序,而不需要那么多的虚拟机和操作系统。
想象一下,你正试图将货物从一个地方运到另一个地方。在现代,你可以用集装箱轻松做到这一点。这些将把某些物品放在一起的密封环境中,使它们能够通过船舶、火车或飞机进行运输。
Docker的工作方式非常类似。简单地说,Docker规范了开发和部署软件的 *** 。
Docker用容器工作。这些容器可以有可重复使用的组件,如、Node、依赖性等等。然后,你可以将容器部署在任何地方,而不必担心兼容性问题。
Docker一开始可能很复杂,所以让我们讨论一下这个软件中涉及的所有主要组件。一旦你了解了这些主要功能,你就可以简化你的应用程序的开发过程了!
Docker Engine是用于在Docker中构建和容器化应用程序的客户-服务器技术。从本质上讲,它支持运行你的基于容器的应用程序所涉及的所有任务:

Docker引擎示意图(来源:)
这些是Docker引擎中的主要组件:
通过Docker引擎,你可以在任何基础设施上运行容器化的应用程序。这种设置有助于实现Docker的行业领先的。
Docker镜像是一个可执行的软件包,包括运行一个应用程序所需的所有源代码、依赖性和工具。镜像是只读模板,为创建容器提供指示。
你可以把Docker镜像想象成蓝图,从而更好地理解它们。它们包含了一个容器运行时将包括的快照。
在一个镜像中,有多个堆叠层。例如,如果你想建立一个 *** 服务器镜像,你可以首先包括Ubuntu Linux。接下来,你可以在上面叠加Apache和PHP的编码。
在 *** Docker镜像时,更好把最易变的层放在堆栈的高处。然后,如果你需要做一个改变,你就不需要重建整个镜像了。
正如我们前面所讨论的,容器是Docker的重要组成部分。简单地说,Docker容器是一个孤立的区域,供应用程序运行而不影响系统的其他部分。这个软件单元将打包所有的代码和依赖关系,以便于从一个应用程序转移到下一个。
以下是使用Docker容器的一些好处:
最终,Docker容器提供了比虚拟机更多的优势。尽管它们以类似的方式隔离和分配资源,但容器通常更可移植、更高效、更安全。
是一个工具,旨在将多个容器作为一个单一服务来运行。如果你的应用同时需要和,Docker Compose可以让你创建一个文件来启动两个容器。这就避免了分别启动每个容器的需要。
以下是使用Docker Compose时的三个基本步骤:
从本质上讲,Docker Compose使多个容器在隔离的情况下运行。然而,在必要的时候,它们可以彼此互动。
例如,Compose可以帮助你创建和配置你的应用程序的服务依赖,如数据库、缓存或。
Dockerfile是一个文本文件,包括构建Docker镜像的说明。通过阅读这个文件,Docker会自动构建新的镜像。
docker build 命令将从Dockerfile和一个上下文中创建一个镜像。这个上下文是一组文件,位于指定的路径或URL中。
首先,输入以下命令:
docker build
这将把整个上下文发送给Docker守护进程。要指向文件系统中的一个Docker文件,请使用这个命令:
docker build -f /path/to/a/Dockerfile
如果构建成功,你可以指定一个你想保存新镜像的存储库和标签:
docker build -t shykes/myapp
然后,Docker守护进程将对Dockerfile进行验证。如果语法上有问题,它将返回一个错误。
要在你的Mac、Linux或Windows环境中开始使用Docker,你可以安装。它提供了一个简单、易于使用的界面,用于管理个人电脑上的容器、应用程序和图像:

Docker桌面
有了Docker Desktop,你就不必使用命令行来执行基本任务了。这可以加速:

Docker桌面仪表盘
它还配备了一个内置的扩展市场,使得开始使用第三方开发者工具变得容易。这些工具包括用于调试、测试和:

Docker桌面扩展市场
另外,Docker Desktop对个人和小型企业使用是免费的。然而,请记住,较大的公司需要,起价为每月5美元。
是一个可以找到和分享容器镜像的平台。它是全球更大的容器镜像库,拥有来自社区开发者、开源项目和独立软件供应商(ISV)的资源:

Docker Hub镜像
以下是Docker Hub中包含的一些功能:
要开始使用Docker Hub,你需要创建你的之一个资源库。你只需要给它起个名字并指定它的可见性:

创建一个Docker Hub资源库
然后,你可以下载Docker Desktop,开始从Docker Hub拉取和推送容器镜像。你会在新仓库的最新标签下看到这些推送。
Docker主要是为DevOps和开发人员设计的。这个工具使开发人员能够创建、定制和部署应用程序,作为可移植的轻量级容器。这种设置将其所有的依赖性打包成一个单元,可以在几乎任何操作系统上运行。
下面是Docker的一个典型用例:
使用这个工作流程,你可以测试新的软件,而不用进行手动安装。例如,你可能会发现设置一个MySQL服务器是很困难和繁琐的。相反,你可以使用Docker CLI来执行这项任务,只需一条命令。
由于Docker有自己的CLI,初学者可以用它来学习如何操作命令行。在Linux环境中设置好Docker后,你可以开始使用。然后,你可以更快、更有效地执行系统管理任务。
现在你已经了解了Docker的核心组件,让我们来讨论它的主要优点和缺点。然后你可以决定它是否对管理你的软件应用程序有用。
作为一个开发者,你的一些工作在手动执行时可能变得乏味和重复。通过Docker容器,你可以安排这些任务的自动化。使用可以大大减少你的工作量,优化你的时间。
此外,Docker是高度可移植的。它使你的开发团队的每个成员都能在应用程序上工作,甚至在不同的服务器、机器或操作系统上。这种设置可以消除许多因平台不兼容而产生的问题。
与虚拟机相比,Docker容器可以节省更多空间。虽然Docker和虚拟机的工作原理相似,但Docker要轻得多。
此外,Docker有一个强大的社区。通过加入Docker社区活动,你可以与其他Docker用户进行面对面和在线交流:

Docker社区
你还可以浏览Docker的广泛的。如果你是一个初学者,这些讨论可以帮助你获得使用这个平台的建议。
正如我们前面提到的,Docker可能比虚拟机更有效。然而,在物理服务器上运行应用程序通常要快得多。
Docker也可能涉及到一个陡峭的学习曲线。它不是为运行具有图形用户界面(GUI)的应用程序而设计的。这意味着你需要学习命令行,这对初学者来说可能是个挑战。
最后,Docker容器将在主机的操作系统上运行。如果这些容器中隐藏有任何恶意软件,主机可能会受到影响。
要,你必须访问主网站。然后,为你的电脑操作系统下载兼容的版本。
如果你有一台Mac电脑,你将需要选择英特尔芯片或苹果芯片的Docker版本。也有针对Windows和Linux用户的选项。
一旦你打开下载的文件,它将在你的电脑上安装Docker Desktop。接下来,打开并创建一个新账户:

在Docker上创建一个账户
现在你可以打开Docker桌面并登录。然后,打开你的命令行或bash窗口,运行这个命令:
docker run -d -p 80:80 docker/getting-started
一旦你这样做,你会在你的Docker Desktop仪表板上看到一个新的容器。它的名字将是为你的账户随机生成的:

新的Docker容器
你也会有一个新的Docker镜像。如果你导航到Images标签,你会看到一个docker/getting-started图像正在使用中:

新的Docker镜像
现在你已经拥有了开始管理你的本地容器所需要的一切!
如果你必须管理多个应用程序,Docker可以成为独立组织它们的有效工具。由于它使用容器,Docker可以帮助你开发每个应用程序,而没有、库或框架冲突的风险。
尽管Docker通常比虚拟机(VM)更有效,但在物理服务器上工作会更快。由于它还依赖于一个命令行界面,Docker可能也不是绝对的初学者的一个好选择。
本章节主要是对宝塔面板的主界面的各个版本进行一个简单的说明。 宝塔面板主界面主要包括:服务器操作系统、服务器状态、站点信息、软件管理及网络流量几个部分。 Windows面板有部分功能未实现,其余部分与Linux面板同步。 系统操作...
宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...
宝塔面板其中一个最为便捷的功能之一,无需SFTP或者FTP即可对服务器的文件内容进行上传、下载、编辑及删除等管理操作。 文件管理,用于管理该服务器上的文件内容。 文件的基础操作 文件的基础操作有哪些了,主要有这些方面:复制、粘贴、剪切、删除、重命名、压缩、刷新、新建文件、新建目录。...
JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为之一。 在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在<scr...
Laravel多年来一直是PHP应用程序开发的摇滚明星,这是有充分理由的。庞大的生态系统、活跃的社区、强大的就业市场、成功的初创公司——它拥有一切让采用新技术变得值得的东西。 如果你想学习Laravel,你不需要更进一步。通过浏览本指南,您可以找到最适合您的Laravel教程,与您的知识水平和...
想成为一名网络开发人员或好奇工作的哪些子类型的薪水最高?Web开发是一个竞争激烈、多样化的行业,随着新语言和框架的出现而不断发展。 询问Web开发人员的薪水是一个难以解决的问题(尽管我们尝试)。有太多的因素需要考虑。 无论您是自由开发者还是有兴趣从事更传统的工作、喜欢前端或后端工作,或者想知...