docker■面向Web开发人员的Docker简介,它满足了我对Container的需求( 二 )
(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■面向Web开发人员的Docker简介,它满足了我对Container的需求】现在 , 我们进入了本教程最有趣的部分 。 我们将对一个简单的应用程序进行docker化 。 首先 , 我们将创建一个简单的Node.js应用程序 , 然后创建Dockerfile , Docker映像 , 最后创建该应用程序的Docker容器 。 但是 , 在此之前 , 请确保已在设备上安装了Docker 。 你可以按照官方文档在Windows或Ubuntu OS上安装Docker。
(1)创建一个简单的Node.js应用程序:我们将创建一个简单的Node应用程序 , 该应用程序在访问根路由时会发送“ Hello World”消息 。 请按照以下步骤设置你的应用程序:
在目录内 , app.js文件包含我们的主要应用程序代码 。
(2)为应用程序创建Dockerfile:现在 , 我们可以使用创建Docker映像所需的信息来创建Dockerfile 。 要为我们的应用程序创建Docker映像 , Dockerfile应该包含这样的一组命令 。
现在 , 我将帮你理解这些命令的含义 。
①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映像 。 下面是它的工作原理:
在运行命令之前 , 请确保已经导航到命令行上的应用程序目录 。 你可以在( 。 )处代替Dockerfile位置 , 以指示Dockerfile位于当前目录中 。 对于我们的示例 , 我将运行:
输出:
一旦你运行了docker build命令 , Docker将连续执行Dockerfile中的每个命令 。 执行FROM命令时 , 如果之前尚未将Node映像拉到你的设备 , 则Docker将从Docker Hub提取该映像 。 你可以使用命令docker images来查看设备中当前的所有图像:
(4)创建Docker容器:我们使用以下命令使用已构建的Docker映像创建并运行Docker容器 。
推荐阅读
- SOWORD科技言|为什么NodeJS是创业公司的首选?了解用于Web开发的NodeJS
- 千锋程序猿|web前端为何会如此受到青睐呢?
- 全球TMT|CodeGuru,AWS宣布面向大众推出Amazon
- 流光年华|社交媒体化的NBD洗洁产品包装设计,面向年轻一代
- 「javascript」为什么NodeJS是创业公司的首选?了解用于Web开发的NodeJS
- 人世繁华|进行面向对象程序设计深剖,可以一学,大牛带你深入Java核心技术
- 韭菜花音乐|苹果批准更新,双喜临门:Hey宣布面向所有用户推出
- Gtechnews|LTI将通过AWS面向基于SAP的企业推出加速迁移计划
- 『web开发』你们常用的web开发工具都有什么?分享我常用的5大Web开发工具
- 爱云资讯|法兰克福版本,中国移动主导发布首个面向5G切片管理的ONAP