Docker入门学习-01

Docker 官方文档

1. Docker 基础知识

1.1 什么是 Docker?

  • Docker 是一个开源的平台,用于开发、交付和运行应用程序。
  • 它使用容器技术,将应用程序及其依赖打包在一个轻量级的可移植容器中。

1.2 Docker 的主要组件

  • 镜像(Image): 只读的模板,包含运行应用程序所需的一切,包括代码、库、环境变量等。
  • 容器(Container): 镜像的运行实例,可以看作是一个轻量级的虚拟机,但它共享主机的操作系统内核。
  • Dockerfile: 定义镜像的文件,包含了一系列命令,Docker 可以根据这些命令构建镜像。
  • Docker Hub: 官方的镜像仓库,可以从中下载现成的镜像,或上传自己的镜像。

2. 环境准备

2.1 安装 Docker

  • 访问 Docker 官网,根据你的操作系统下载并安装 Docker。
  • 安装完成后,可以通过命令行运行 docker --version 来验证 Docker 是否正确安装。

3. 第一个 Docker 容器

3.1 运行 Hello World

docker run hello-world
  • 这个命令会从 Docker Hub 拉取 hello-world 镜像,并在容器中运行它。
  • 你会看到一条包含 “Hello from Docker!” 的消息,这意味着你的 Docker 安装成功,并且可以正确运行容器。

3.2 理解 docker run 命令

  • docker run:创建并启动一个新的容器。
  • hello-world:要运行的镜像名称。

4. Dockerfile 与自定义镜像

4.1 创建 Dockerfile

# 使用官方的 Node.js 镜像
FROM node:14# 创建并设置工作目录
WORKDIR /usr/src/app# 复制项目文件到工作目录
COPY . .# 安装项目依赖
RUN npm install# 暴露端口
EXPOSE 3000# 启动应用程序
CMD [ "npm", "start" ]
  • WORKDIR /usr/src/app:将容器内的工作目录设置为 /usr/src/app。接下来所有的 COPY、RUN 等命令都会基于这个目录执行。
  • COPY . .:将本地项目的所有文件复制到容器内的工作目录中。
  • RUN npm install:在容器内安装项目的依赖项。
  • CMD [“npm”, “start”]:设置容器启动时要执行的命令,这里是 npm start,它会启动 Node.js 应用。

4.2 构建镜像

docker build -t my-node-app .
  • -t my-node-app:指定镜像的名称。
  • .:指定 Dockerfile 所在的目录。

4.3 运行容器

docker run -p 3000:3000 my-node-app
  • -p 3000:3000:将主机的 3000 端口映射到容器的 3000 端口。
  • my-node-app:要运行的镜像名称。

4.4 访问应用

打开浏览器,访问 http://localhost:3000,应该可以看到页面显示 “Hello, Docker!”。

5. 完整实例

my-node-app/
│
├── Dockerfile
├── package.json
├── package-lock.json
└── index.js

index.js

const express = require('express');
const app = express();app.get('/', (req, res) => {res.send('Hello, Docker!');
});app.listen(3000, () => {console.log('Server is running on port 3000');
});

package.json

{"name": "my-node-app","version": "1.0.0","description": "A simple Node.js app to demonstrate Docker","main": "index.js","scripts": {"start": "node index.js"},"dependencies": {"express": "^4.17.1"}
}

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

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

相关文章

【计算机视觉前沿研究 热点 顶会】ECCV 2024中目标检测有关的论文

整值训练和尖峰驱动推理尖峰神经网络用于高性能和节能的目标检测 与人工神经网络(ANN)相比,脑激励的脉冲神经网络(SNN)具有生物合理性和低功耗的优势。由于 SNN 的性能较差,目前的应用仅限于简单的分类任务。在这项工作中,我们专注于弥合人工…

【CVPR‘24】DeCoTR:使用 2D 和 3D 注意力增强深度补全

DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions 中文解析摘要介绍方法方法3.1 问题设置3.2 使用高效的 2D 注意力增强基线3.3 3D中的特征交叉注意力点云归一化位置嵌入3.4 捕捉 3D 中的全局上下…

分享GoFly项目案例-降本增效数字化解决多仓库、动态仓库(车辆存储)、动态调调度、动态配送方案

前言 传统的生产原料企业在数字化转型中,需要到一个客户与产品配送(运输)管理及调度系统。系统要达到管理者可以看到产品数据,做业务的可以了解到货品库存、货品位置(可调度最近货品给客户)、货品配送情况…

给鼠标一个好看的指针特效 鼠标光标如何修改形状?

许多爱美的小伙伴们都想着如何给自己的电脑打扮一下,用各种各样的途径来美化我们的电脑。今天我们给大家分享一下,如何美化鼠标效果,给鼠标指针修改成一个非常好看的形状~ 一起来看几组鼠标的效果,小编我给大家做了个录屏&#x…

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口&#xff0c…

OT安全零死角!Fortinet OT安全平台再升级

近日,专注推动网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT),宣布对旗下业界领先的OT安全平台进行新一轮全面升级,此次更新旨在深化安全组网与安全运营(SecOps)服务的功…

依托自研力量,给共享集群存储服务一个优选

YashanDB共享集群有三大关键组件,崖山集群服务(YCS)、崖山集群文件系统(YFS)、DB组件。上一篇共享集群系列文章《为何共享集群的高可用能力被频频称赞,它的机制有何不同?》深入解析了关键组件的…

NVIDIA RTX 50系列大爆料:功耗飙升600W,性能直逼RTX 4090 1.?倍,你准备好了吗?

在科技圈的万众瞩目下,知名硬件爆料大神Kopite7kimi再次为我们揭开了NVIDIA下一代GeForce RTX系列——“Blackwell”阵容的神秘面纱。这次,关于新显卡的功耗信息不再是模糊的概念,而是实实在在的数字,让人不禁对即将到来的性能飞跃…

ELK学习笔记(一)——使用K8S部署ElasticSearch8.15.0集群

一、下载镜像 #1、下载官方镜像 docker pull elasticsearch:8.15.0 #2、打新tag docker tag elasticsearch:8.15.0 192.168.9.41:8088/new-erp-common/elasticsearch:8.15.0 #3、推送到私有仓库harbor docker push 192.168.9.41:8088/new-erp-common/elasticsearch:8.15.0二、…

Python3.8绿色便携版安装版制作

Python 的绿色便携版有两种:官方 Embeddable 版本(嵌入式版);安装版制作的绿色版。Embeddable 版适用于需要将 Python 集成到其他应用程序或项目中的情况,它不包含图形界面的安装程序,只提供了 Python 解释器和必要的库…

C# 使用国密SM4加密解密

首先需第三方Nuget包:Portable.BouncyCastle (源码来自http://www.bouncycastle.org/csharp/),支持.NET 4,.NET Standard 2.0 目录 目录 使用BouncyCastle指定填充方案 零填充(Zero Padding) PKCS7填充…

排查SQL Server中的内存不足及其他疑难问题

文章目录 引言I DMV 资源信号灯资源信号灯 DMV sys.dm_exec_query_resource_semaphores( 确定查询执行内存的等待)查询性能计数器什么是内存授予?II DBCC MEMORYSTATUS 查询内存对象III DBCC 命令释放多个 SQL Server 内存缓存 - 临时度量值IV 等待资源池 %ls (%ld)中的内存…

Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码

打开Camera Calibrator 在这添加你拍摄的图片 根据你每个方块的实际边长填写,我是15mm。 通俗一点,要k3就选3 Coefficients,否则为0;要p1、p2就选Tangential Distortion。然后进行计算。 可以点击右侧误差高的选中图像进行移…

vuex 基础使用

1、封装使用 在项目中的 Store 文件夹下创建 modules 文件夹 getters.js 和 index.js 然后如下: modules 文件夹下创建 一个 index.js 文件 存放需要的功能方法 // 写一个简单的菜单切换,获取当前点击菜单的索引 const Index {state: {menuIndex: 0,…

AI-Talk开发板之LED

一、说明 AI-Talk开发板上有一颗用户LED,连接在CH32 PA2管脚,低电平亮,高电平灭。 相关电路图如下: 二、工程 1、创建项目 进入snap/examples/目录,执行创建项目的命令: lisa zep create ? 选择sam…

C# 窗体中Control以及Invalidate,Update,Refresh三种重绘方法的区别

在 C# 中,Control 类是 Windows Forms 应用程序中所有控件的基类。它提供了控件的基本功能和属性,这些功能和属性被所有继承自 Control 类的子类所共享。这意味着 Control 类是构建 Windows Forms 应用程序中用户界面元素的基础。 以下是 Control 类的一…

【编程基础】跳房子

题目描述 奶牛们按不太传统的方式玩起了小孩子们玩的"跳房子"游戏。奶牛们创造了一个5x5的、由与x,y轴平行的数字组成的直线型网格,而不是用来在里面跳的、线性排列的、带数字的方格。然后他们熟练地在网格中的数字中跳:向前跳、向后跳、向左…

C# 特性与属性的区别

在 C# 中,"特性"(Attribute)和"属性"(Property)是两种不同的概念,它们在编程中扮演不同的角色: 属性(Property): 属性是类或结构的一部分…

第66期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

C++:关于反向迭代器的学习分享

前言: 小编仅是一位初学者,所以对于C的理解有限,文章大概率会出现表达不清楚可能也只是因为小编不知道如何更好表达,本文章仅作为一个学习的总结分享。 反向迭代器的概念 反向迭代器故名思意解释反向的迭代器,与正向迭…