docker from指令的含义_面向Web开发人员的Docker简介,它满足了我对Container的需求...

09d0244dfb66b614bee98ab6436ece5d.png

对于现代开发人员来说,必须知道如何在应用程序开发中使用Container(容器)。近期对Container的需求的一个原因是Docker的出现。Docker不仅增加了Container(容器)的使用,而且对我们进行应用程序开发的方式产生了巨大影响。

如果你还没有阅读到相关的介绍Container(容器)的文章,那么你来对地方了。在本文中,我们将向你介绍Docker的概念,并通过Docker化一个简单的应用程序获得动手学习Docker的方法。首先,让我们说明一下Docker是什么以及为什么它会变得如此重要。

1、什么是Docker?

Docker是开发人员用来通过Container(容器)在隔离环境中创建、部署和运行应用程序的工具。尽管本文已多次使用该术语,但你可能不知道什么是Container(容器)。为了完全理解上述陈述,我们必须首先了解什么是Container(容器)。

2、什么是Container(容器),我们为什么需要它?

Container(容器)是将应用程序代码和应用程序中使用的所有依赖项打包到一个程序包中的软件单元。打包让Container(容器)可以将应用程序与其运行所在的主机环境隔离。应用程序将Container(容器)视为其环境,而不是主机设备。这种抽象保证了在开发环境中运行的应用程序能够在生产环境中运行而无需进行重大更改。即使主机设备上正在运行多个应用程序,Container(容器)也可以将容器化的应用程序与其他应用程序的操作相互干扰并共享其资源。

在使用Container(容器)之前,使用虚拟机将应用程序与主机环境隔离。在虚拟机中,每台计算机使用单独的操作系统来运行应用程序。尽管此方法也达到了隔离应用程序的目的,但它的缺点是在应用程序顶部增加了过多资源。另一方面,Container(容器)共享主机设备的OS内核,而不使用自己的OS,这消除了虚拟机增加的资源。与虚拟机相比,这使Container(容器)更轻便,资源效率更高。

27b51d2eb0adcc90bee1f210ead25497.png

尽管Container在使用Docker之前就已经使用很久了,但是可以肯定地说Docker是Container在现代编程世界中极度普及的最大原因。除了开源之外,Docker的易用性,可靠性和效率使编程世界立即爱上了该技术。

3、什么是Dockerfile,Docker映像和Docker Engine?

Docker带有其特殊的语言。Dockerfile,Docker映像和Docker Engine是Docker用户中常用的三个词。这些也是构建Docker容器时使用的3个最重要的组件。

(1)Docker文件 :Dockerfile包含一组构建Docker映像的指令。创建Docker映像时,这些说明将一个接一个地运行。Dockerfile中的指令包含诸如主机设备的OS,应用程序的编程语言,应用程序目录位置,网络端口和环境变量之类的信息。

(2)Docker镜像:Docker映像是用于为应用程序创建最终Docker Container的模板。我们可以通过以Dockerfile作为参数运行docker build命令来生成应用程序的Docker映像。创建Docker Container,我们需使用docker run命令和Docker映像。

(3)Docker Engine:Docker Engine是运行所有Docker容器的地方。基于Windows和Linux的应用程序都可以在Docker Engine上运行。

4、如何对应用程序简单的进行Docker化

现在,我们进入了本教程最有趣的部分。我们将对一个简单的应用程序进行docker化。首先,我们将创建一个简单的Node.js应用程序,然后创建Dockerfile,Docker映像,最后创建该应用程序的Docker容器。但是,在此之前,请确保已在设备上安装了Docker。你可以按照官方文档在Windows或Ubuntu OS上安装Docker 。

(1)创建一个简单的Node.js应用程序:我们将创建一个简单的Node应用程序,该应用程序在访问根路由时会发送“ Hello World”消息。请按照以下步骤设置你的应用程序:

02a2706e245f55d5ec03717717cc3c77.png

在目录内,app.js文件包含我们的主要应用程序代码。

e6682f15bfcd4402c34af8fcf1252289.png

(2)为应用程序创建Dockerfile:现在,我们可以使用创建Docker映像所需的信息来创建Dockerfile。要为我们的应用程序创建Docker映像,Dockerfile应该包含这样的一组命令。

6e3664ec7bdf3b749640cf744f171152.png

现在,我将帮你理解这些命令的含义。

①FROM-此命令设置基本映像,并在此基础上构建应用程序的新映像。在本例中,我们使用的图像包含npm和最新的Node.js版本。该映像是从Docker Hub(它是Docker映像的公共存储库)中提取的。

②WORKDIR-此命令为将在容器内运行的应用程序设置工作目录。

③COPY-此命令将应用程序目录中的文件复制到我们使用上一个命令设置的工作目录中。你可以将路径传递给特定的文件名,或者执行上述操作以将应用程序目录中的所有文件复制到Docker映像。在后一种情况下,请确保在运行docker build命令时已导航至命令行上的应用程序目录。

④ENV-在Node应用程序中,请注意我们如何将环境变量PORT(process.env.PORT)传递给app.listen函数,而不是直接传递应用程序应侦听的端口号。因此,我们必须在应用程序环境中设置PORT环境变量。对于我们的应用程序,它将转到Docker容器。因此,我们使用ENV命令在Docker容器内传递要设置为环境变量的变量。

⑤RUN-此命令运行npm install来安装应用程序中使用的依赖项,这些依赖项已保存到package.json文件中。

⑥EXPOSE-此命令公开应用程序以侦听给定的端口。由于我们已经将端口号设置为环境变量,因此我们传递变量名称$ PORT代替实际的端口号。但是,请记住,应用程序暴露在容器环境而不是主机设备环境内部的端口3000上。

⑦ENTRYPOINT-此命令设置如何输入或启动我们的应用程序。Docker加入我们传递的数组,以创建一个用于启动应用程序的命令,即节点app.js。

(3)构建Docker映像:我们使用docker build命令从Dockerfile构建Docker映像。下面是它的工作原理:

c8fd72de2da950750a2364b57b8e0699.png

在运行命令之前,请确保已经导航到命令行上的应用程序目录。你可以在(。)处代替Dockerfile位置,以指示Dockerfile位于当前目录中。对于我们的示例,我将运行:

f552faf6475fc33a3f00e865a12e46ab.png

输出:

36554d9ecdec1917b2298d4d80c4b284.png

一旦你运行了docker build命令,Docker将连续执行Dockerfile中的每个命令。执行FROM命令时,如果之前尚未将Node映像拉到你的设备,则Docker将从Docker Hub提取该映像。你可以使用命令docker images来查看设备中当前的所有图像:

6ef00c448b896f1792836e2c071f3e21.png

(4)创建Docker容器:我们使用以下命令使用已构建的Docker映像创建并运行Docker容器。

ab7290b670677d23d36c52cab351426a.png

输出:

d1a0511555be6022c59c5bb1cd9fa3e5.png

在此,-d标志用于在守护程序模式下运行容器。-p标志用于将容器打开到外部的端口映射到应用程序正在侦听的端口。以前,在Dockerfile中,我们将内部端口或应用程序端口设置为3000。因此,在这里,我们将容器打开到主机设备的端口8080映射到端口3000。这docker-tutorial是Docker的名称-图片。

至此,我们完成了对Node应用程序简单的进行docker化的过程。你可以在浏览器上访问URL http:// localhost:8080,以检查应用程序和容器是否正常运行。如果成功,你将看到消息“ Hello World”。(如果你的Docker Engine不在本地主机中运行,请将本地主机替换为其在设备上使用的IP地址。)

(5)停止和移除Docker容器:如果要停止正在运行的Docker容器,请使用以下命令。

3cacdd89d67d37db8379e0dc54a78904.png

但是,这只会停止容器,而没有将其完全从系统中删除。如果要重新启动容器,则可以使用带有容器ID的docker start命令。如果要完全删除已停止的容器,请使用此命令。

0208b3ce5cf27345f86c438932d8d482.png

5、最后

如今,Docker已经成为一项庞大的技术,它对于每个开发人员而言都是无法忽略的存在。我的文章向你介绍了这种流行的技术,并解释了Docker是什么以及与Docker一起使用以对应用程序进行容器化。我们学习了如何为简单的Node.js应用程序创建Dockerfile,Docker映像以及最终的Docker容器。但这仅仅是Docker的开始。它具有更多功能和高级配置,可帮助你轻松,高效地创建,运行和部署应用程序。因此,我将对Docker的介绍作为一次深入探讨和探索与Docker相关的更复杂概念的机会。

感谢您的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值