docker入门教程之将应用程序容器化

news2024/11/15 19:57:55

将应用程序容器化

在本指南的其余部分中,您将使用在 Node.js 上运行的简单待办事项列表管理器。如果您不熟悉 Node.js,请不要担心。本指南不需要任何 JavaScript 经验。

先决条件

  • 您已安装最新版本的 Docker Desktop。
  • 您已经安装了 Git 客户端。
  • 您可以使用 IDE 或文本编辑器来编辑文件。 Docker 建议使用 Visual Studio Code。

 

  • Code。

下载这个软件

在运行应用程序之前,您需要将应用程序源代码获取到您的计算机上。

  1. 使用以下命令克隆 getting-started-app 存储库:

     
    $ git clone https://github.com/docker/getting-started-app.git
    
  2. 查看克隆存储库的内容。您应该看到以下文件和子目录。

    ├── getting-started-app/
    │ ├── package.json
    │ ├── README.md
    │ ├── spec/
    │ ├── src/
    │ └── yarn.lock

构建应用程序的映像

要构建映像,您需要使用 Dockerfile。 Dockerfile 只是一个基于文本的文件,没有文件扩展名,但包含指令脚本。 Docker 使用此脚本构建容器映像。

  1. 在该getting-started-app目录中与该文件相同的位置package.json,创建一个名为Dockerfile.您可以使用以下命令根据您的操作系统创建 Dockerfile。

    Mac / Linux / Windows (Git Bash) Windows(命令提示符) Windows(PowerShell)

    在终端中,运行以下命令。

    确保您位于该getting-started-app目录中。替换/path/to/getting-started-app为您的目录的路径getting-started-app

     
    $ cd /path/to/getting-started-app
    

    创建一个名为 的空文件Dockerfile

     
    $ touch Dockerfile
    

  2. 使用文本编辑器或代码编辑器,将以下内容添加到 Dockerfile 中:

     
    # syntax=docker/dockerfile:1
    
    FROM node:18-alpine
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]
    EXPOSE 3000
  3. 使用以下命令构建图像:

    在终端中,确保您位于getting-started-app目录中。替换/path/to/getting-started-app为您的目录的路径getting-started-app

     
    $ cd /path/to/getting-started-app
    

    构建形象。

     
    $ docker build -t getting-started .
    

    docker build命令使用 Dockerfile 构建新映像。您可能已经注意到 Docker 下载了很多“层”。这是因为您指示构建器您想要从node:18-alpine映像开始。但是,由于您的计算机上没有该镜像,因此 Docker 需要下载该镜像。

    Docker 下载映像后,Dockerfile 中的指令会复制到您的应用程序中并用于yarn安装应用程序的依赖项。该CMD指令指定从此映像启动容器时要运行的默认命令。

    最后,-t旗帜标记您的图像。将此视为最终图像的人类可读名称。由于您命名了该镜像getting-started,因此您可以在运行容器时引用该镜像。

    命令末尾.的告诉 Docker 它应该在当前目录中docker build查找。

启动应用程序容器

现在您已经有了映像,您可以使用docker run命令在容器中运行应用程序。

  1. 使用以下命令运行容器docker run并指定刚刚创建的映像的名称:

     
    $ docker run -dp 127.0.0.1:3000:3000 getting-started
    

    -d标志( 的缩写--detach)在后台运行容器。这意味着 Docker 启动您的容器并将您返回到终端提示符。您可以通过在Containers下的 Docker Dashboard 中查看容器或docker ps在终端中运行来验证容器是否正在运行。

    -p标志( 的缩写--publish)在主机和容器之间创建端口映射。该-p标志采用 格式的字符串值 HOST:CONTAINER,其中HOST是主机上的地址,CONTAINER是容器上的端口。该命令将容器的端口 3000 发布到 主机上的127.0.0.1:3000( )。localhost:3000如果没有端口映射,您将无法从主机访问应用程序。

  2. 几秒钟后,打开 Web 浏览器访问 http://localhost:3000。您应该会看到您的应用程序。

    todo-list-empty.webp
  3. 添加一两个项目,看看它是否按您的预期工作。您可以将项目标记为完成并将其删除。您的前端已成功将项目存储在后端。

此时,您已经有一个正在运行的待办事项列表管理器,其中包含一些项目。

如果您快速查看一下容器,您应该会看到至少有一个容器正在使用该getting-started映像并在 port 上运行3000。要查看容器,您可以使用 CLI 或 Docker Desktop 的图形界面。

 

 

命令行界面 

docker ps在终端中运行以下命令以列出您的容器。

 
$ docker ps

应出现类似于以下内容的输出。

 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
df784548666d        getting-started     "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        127.0.0.1:3000->3000/tcp   priceless_mcclintock

概括

在本部分中,您学习了有关创建 Dockerfile 来构建映像的基础知识。构建镜像后,您启动了一个容器并看到正在运行的应用程序。

相关信息:

  • Dockerfile 参考
  • docker CLI 参考
  • 使用 Docker 构建指南

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓派与Win11通信【一对一】(四)

树莓派与Win11通信【一对一】(四) 树莓派与Win11通信【一对一】(四)的代码优化版, 最近给代码添加了打开摄像头与否的验证,以及文件的保存,定时拍摄 1.Server端 import socket import time …

解决浏览器端 globalThis is not defined 报错

解决浏览器端 globalThis is not defined 报错 前言解决办法&#xff1a; 前言 在使用低版本火狐浏览器出现报错globalThis is not defined 解决办法&#xff1a; 在vue的index.html 中添加 this.globalThis || (this.globalThis this) <head><script>this.g…

vue3-自定义指令

自定义指令 vue 除了内置的制指令&#xff08;v-model v-show 等&#xff09;之外&#xff0c;还允许我们注册自定义的指令。 vue 复用代码的方式&#xff1a; 组件&#xff1a;主要是构建模块。 组合式函数&#xff1a;侧重有状态的逻辑。 自定义指令&#xff1a;主要是为…

day10笔记

API 显示->索引->搜索框输入->回车查看信息 字符串 直接赋值进串池(会先找,有复用) new出来的在堆里面 字符串比较 ""引用数据类型比较的是地址值 一模一样的比较 忽略大小写的比较 Scanner输入的数据是new出来的 遍历字符串 public class StringDe…

【ELK】logstash快速入门

1.概述 1.1.什么是logstash&#xff1f; 之前我们聊了es&#xff0c;并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的&#xff0c;然后结合kibana对日志做一些可视化的工作。既然要收集日志&#xff0c;就面临着一个问题&#xff1a; 各个系统的…

微信小程序(三十三)promise异步写法

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.promise异步与普通异步的写法区别 2.promise异步的优势 源码&#xff1a; index.wxml <view class"preview" bind:tap"onChoose"><image src"{{avatar}}" mode"…

Python—数据可视化Seaborn大全:参数详解与实战案例全解析【第52篇—python:Seaborn大全】

文章目录 Seaborn库常用绘图详解与实战引言安装与导入一、散点图参数说明实战案例 二、直方图参数说明实战案例 三、线性关系图参数说明实战案例 四、热力图参数说明实战案例 五、分布图参数说明实战案例 六、箱线图参数说明实战案例 七、联合分布图参数说明实战案例 八、小提琴…

计算机设计大赛 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

Elasticsearch(ES) 创建带有分词器规则的索引

上文 Elasticsearch(ES) 下载添加IK分词器 带大家 下载 并使用了 IK 分词器 我们先启动 ES 服务 然后 我们来说 IK分词器 怎么用 设置分词器 我们还是要发put请求 创建索引时 通过参数设置 这里 我们put请求 类型要换成 json的 我们先加一个这样的模板 {"mappings&quo…

如何把vue项目打包成桌面程序 electron-builder

引入 我们想要把我们写的vue项目,打包成桌面程序&#xff0c;我们需要使用electron-builder这个库 如何使用 首先添加打包工具 vue add electron-builder 选择最新版本 下载完毕 我们可以看到我们的package.json中多了几行 electron:build&#xff1a;打包我们的可执行程序 e…

【开源】基于JAVA+Vue+SpringBoot的教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

#从零开始# 在深度学习环境中,如何用 pycharm配置使用 pipenv 虚拟环境

为Python项目创建虚拟环境 在深度学习环境和一般python环境中安装pipenv基本一致&#xff0c;只需要确认好pipenv指定的python版本即可,安装pipenv前&#xff0c;可以通过python --version来确认安装版本 快捷键&#xff1a;crtl alt S 查看interpreter&#xff0c;查看所有…

C++棋类小游戏2

今天给大家带来我花了1周时间自创的小游戏的升级版&#xff0c;博主还是一名小学生&#xff0c;希望大家提提意见。这是我写的最长的C代码&#xff0c;希望大家喜欢&#xff0c;不要抄袭&#xff0c;任何编译器都可以。 以前版本——C自创棋类小游戏-CSDN博客 C内容提示&…

揭秘备忘录模式:打造灵活高效的状态管理解决方案

备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不暴露对象内部状态的情况下捕获和恢复对象的内部状态。这种模式主要用于实现撤销操作。 在 Java 中&#xff0c;备忘录模式通常包括以下三个角色&#xff1a; 发起人&#xff08;O…

jmeter-03界面介绍

文章目录 主界面介绍工具栏介绍测试计划介绍线程组介绍线程组——选择测试计划&#xff0c;右键-->添加-->线程-->线程组1.线程数2.准备时长(Ramp-up)3.循环次数4.same user on each iteratio5.调度器 主界面介绍 工具栏介绍 新建测试计划&#xff1a;创建一个空白的测…

Django模型(四)

一、数据操作初始化 from django.db import models# Create your models here. class Place(models.Model):"""位置信息"""name = models.CharField(max_length=32,verbose_name=地名)address = models.CharField(max_length=64,null=True,verbo…

记录在树莓派中部署PI-Assistant开源项目(GPT语音对话)的BUG

核心 在部署PI-Assistant&#xff08;https://github.com/Lucky-183/PI-Assistant&#xff09;项目中&#xff0c;首先要进行环境安装&#xff0c;官网文档中提供的安装命令如下&#xff1a; pip install requests arcade RPi.GPIO pydub numpy wave sounddevice pymysql cn2…

Endnote常见设置(硕士毕业论文参考文献修改)

1、根据大多数期刊或学校使用的标准&#xff0c;英文名首字母大写后续字母小写。 2、需要手动调整Endnote中的参考文献相关内容 3、关于姓名大小写设置 AS IS是不更改大小写&#xff0c;EndNote库中文献的大小是什么样&#xff0c;Word中就显示什么样。选择Normal为首字母大…

【Langchain+Streamlit】打造一个旅游问答AI

利用LangchainStreamlit打造一个交互简单的旅游问答AI机器人&#xff0c;如果你有openai账号,可以按照如下的网址直接体验&#xff0c;如果你没有的话可以站内私信博主要一下临时key体验一下&#xff1a; 产品使用传送门—— http://101.33.225.241:8501/ 这里有演示效果和代码…

[word] word小数点对齐怎么设置 #微信#其他#其他

word小数点对齐怎么设置 使用Word编辑文档的时候&#xff0c;如果有小技巧的话&#xff0c;可以解决很多遇到的问题&#xff0c;也让工作更高效的完成&#xff0c;下面给大家分享word小数点对齐怎么设置的小技巧。 1、设置格式 选中内容&#xff0c;点击段落一一制表符&#…