iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >如何使用 Dockerfile 创建一个简单容器
  • 868
分享到

如何使用 Dockerfile 创建一个简单容器

2024-04-02 19:04:59 868人浏览 薄情痞子
摘要

目录Dockerfile写一个 Dockerfile优化 Dockerfilecontainer shellDockerfile Dockerfile 是用于指导 docker 创建

Dockerfile

Dockerfile 是用于指导 docker 创建自定义 image 的一系列指令,是用于创建 image 的蓝图。

现在有一个简单的 node 项目( 其中Dockerfile 是后面加的,初始项目没有此文件):

要运行此代码,一般的做法是,先在本机安装 node,然后在项目文件夹中先后运行:

npm install

以及:

node server.js

然后在浏览器 localhost 地址就可以看到app运行界面。

写一个 Dockerfile

如果要改为在 container 中运行此程序,那么首先需要有此 node appimage,要创建 image, 则需要写一个Dockerfile:

# 将在 node image 基础上创建此自定义的 image
FROM node

# Docker container 工作目录
# 此指令告诉 Docker,余下的指令将在容器内的 /app 文件夹内执行。
WORKDIR /app

# 将当前项目文件夹内的所有文件及子文件全部copy 到 /app 文件夹中
# 因为有上一条指令,这里改为  COPY . . 也可以
COPY . /app

# 安装 package.JSON 中的package,生成 node_modules 文件夹
RUN npm install

# 容器内的进程将发布端口 80
# 可选,这条指令什么也不做,只起文档作用,best practice
EXPOSE 80

# 当基于此 image 的容器启动后,命令  node server.js 将会执行
CMD ["node", "server.js"]

上述Dockerfile总共6条指令,起作用的只有5条。

然后在终端执行命令,此命令将生成此 node app 的 image:

docker build .    

. 号是Dockerfile 文件所在的路径,这里刚好是当前路径。

docker 容器是与外界独立的进程,具有自己的内部网络,当容器内的 node 应用程序在容器的端口 80 监听时,容器不会将该端口发布到我们的本地机器。此外 Dockerfile 里的端口不起作用,因此必须在命令中使用 --publish 或者 -p 实现本机端口和运行的容器端口的映射。

运行基于此image的容器:

docker run --publish 3000:80 previously_generated_image_id

打开浏览器 localhost:3000 就可以查看运行界面。

优化 Dockerfile

image 只读,如果修改了 source code,需要重新 build 一遍,其中的 npm install 特别费时间,但此指令通常是不需要执行的,因为新增第三方包的可能性远低于修改代码的可能性。

每次build image 时,Docker 都会缓存每条指令执行的结果。所以当重新 build image 时,如果不需要再次运行指令,它将使用这些缓存的结果。 这被称为基于层的架构

每条指令都代表 Dockerfile 中的一个层, image 是根据这些不同的指令简单地从多个层构建的。

将 RUN npm install 指令提前将能优化image 的构建:

FROM node

WORKDIR /app

COPY package.json /app 

# 将此指令提前,通常都能利用前一次build 的结果,
# 因此能极大节省重新 build image 所需要的时间。
RUN npm install

COPY . /app

# optional
# 这条指令什么也不做,只起文档作用,best practice
EXPOSE 80

CMD ["node", "server.js"]

container shell

使用 -it 能获得容器的 shell, i: interactive, t: tty :

docker run -it 46613ce05eae bash

然后就可以查看安装到容器内的 node 版本,以及 /app 内的文件等等,使用 exit 命令退出。

root@ca432bda02aa:/app# node -v
v18.0.0   
root@ca432bda02aa:/app# ls  
Dockerfile  node_modules  package-lock.json  package.json  public  server.js
root@ca432bda02aa:/app#

到此这篇关于如何使用 Dockerfile 创建一个简单容器的文章就介绍到这了,更多相关 Dockerfile 创建容器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何使用 Dockerfile 创建一个简单容器

本文链接: https://www.lsjlt.com/news/147088.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用 Dockerfile 创建一个简单容器
    目录Dockerfile写一个 Dockerfile优化 Dockerfilecontainer shellDockerfile Dockerfile 是用于指导 docker 创建...
    99+
    2022-11-13
  • 如何使用Node.js创建一个简单的HTTP服务器
    这篇文章主要介绍“如何使用Node.js创建一个简单的HTTP服务器”,在日常操作中,相信很多人在如何使用Node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • 如何使用JavaScript创建一个简单的项目
    JavaScript 是一种非常有用的编程语言,它被广泛应用于 web 开发、构建单页应用等领域。因此,了解如何使用 JavaScript 创建项目,是每个 web 开发者都需要掌握的基础技能。在本文中,我们将介绍如何使用 JavaScri...
    99+
    2023-05-14
  • 使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)
    文章主人公:帅哥BUG😎  文章路人: 路人 🤨  路人 😛 🤨:什么是dockerfile 😎:Dockerfile 是一个文本...
    99+
    2023-10-26
    运维 服务器 容器 docker 云原生
  • TypeScript创建一个简单Web应用
    目录安装TypeScript构建你的第一个TypeScript文件编译代码类型注解接口类运行TypeScript Web应用实践项目地址安装TypeScript 获取TypeScri...
    99+
    2022-11-13
  • nodejs使用express创建一个简单web应用
    Express 在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs。 这里我们使用ejs模板引擎:(关于ejs的介绍可以先从百科里面了解一个大概) EJS是一个JavaScript模板库,用来...
    99+
    2022-06-04
    创建一个 简单 nodejs
  • sublime如何创建一个简单的网页
    这篇文章主要介绍了sublime如何创建一个简单的网页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法步骤:在桌面上新建一个文件夹。打开文件夹在里面新建一个html文件。用...
    99+
    2023-06-15
  • 如何创建一个简单的mysql数据库
    今天小编给大家分享一下如何创建一个简单的mysql数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2022-11-30
    mysql
  • 使用Dockerfile如何构建一个docker镜像
    这篇文章给大家介绍使用Dockerfile如何构建一个docker镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用Dockerfile构建docker镜像1、什么是Dockerfile?   ...
    99+
    2023-06-14
  • 如何使用 Python 创建一个二维码容器?
    二维码是现代生活中越来越常见的一种信息识别方式。在电商、支付、物流等领域都得到了广泛的应用。本文将介绍如何使用 Python 创建一个二维码容器。 安装 qrcode 库 在 Python 中,有一个叫做 qrcode 的第三方库可以...
    99+
    2023-08-22
    关键字 二维码 容器
  • 使用python简单创建一个用户和商城小
    整体思路: 1.用户功能:购买、显示余额、列表清单、输入 2.商家功能:修改和添加商品 创建两个接口: 用户: #Author: Gordon#读取文档,生成goodsf = open('goods.txt',mode='r+',enco...
    99+
    2023-01-30
    创建一个 简单 商城
  • 浅析用Node创建一个简单的HTTP服务器
    怎么使用NodeJS创建HTTP服务器?下面本篇文章给大家介绍一下使用Node创建一个简单的HTTP服务器的方法,希望对大家有所帮助!1. 使用Node.js直接运行JavaScript脚本node.js基于Chrome的v8引擎运行js代...
    99+
    2023-05-14
    Node.js node
  • 怎么用Node创建一个简单的HTTP服务器
    这篇文章主要介绍“怎么用Node创建一个简单的HTTP服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。1. 使用Node.js...
    99+
    2023-07-04
  • 如何创建一个简单的 MVC Codeigniter CRUD 应用程序
    Codeigniter 是需要数据库集成和接口的项目的流行选择。主要原因是用于设置和使用数据库连接的简单框架内选项。这意味着 Codeigniter 是 MVC CRUD 应用程序的绝佳选择。在详细介绍这个 Codeigniter CRUD...
    99+
    2022-05-26
  • 如何使用Node.js构建一个简单Web服务器
    Node.js是一个用于后端服务的JavaScript运行环境,它允许开发者使用同一种语言编写服务器端和客户端应用程序。与其他后端技术相比,Node.js具有更高的处理能力和更好的可扩展性。在这篇文章中,我们将介绍如何使用Node.js构建...
    99+
    2023-05-14
  • 怎么用MyBatis创建一个简单的程序
    这篇文章主要介绍“怎么用MyBatis创建一个简单的程序”,在日常操作中,相信很多人在怎么用MyBatis创建一个简单的程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用MyBatis创建一个简单的程序...
    99+
    2023-06-29
  • 怎么用pygame创建一个简单的窗口
    这篇文章主要介绍“怎么用pygame创建一个简单的窗口”,在日常操作中,相信很多人在怎么用pygame创建一个简单的窗口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用pygame创建一个简单的窗口”的疑...
    99+
    2023-06-02
  • 如何使用php搭建一个简单的网站
    要使用PHP搭建一个简单的网站,您可以按照以下步骤进行操作:1. 安装PHP:首先,您需要在您的计算机上安装PHP。您可以从PHP官...
    99+
    2023-08-24
    php
  • 如何利用Java AWT 创建一个简易计算器
    目录一、关于AWT二、逻辑部分1.对于数字按钮2.对于算术按钮3.对于等号按钮4.对于清除按钮5.对于退格按钮6.特殊插件功能7.==例如==:三、GIF演示四、附完整代码摘要:手把...
    99+
    2022-11-13
  • 如何使用Dockerfile创建支持ssh服务自启动的容器镜像
    本文小编为大家详细介绍“如何使用Dockerfile创建支持ssh服务自启动的容器镜像”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用Dockerfile创建支持ssh服务自启动的容器镜像”文章能帮...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作