Docker入门学习-01

news/2024/9/17 1:36:20/ 标签: docker, 学习, 容器

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 安装成功,并且可以正确运行容器

docker_run__23">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.ppmy.cn/news/1522542.html

相关文章

Django form.save 方法的详细分析

在 Django 中,form.save() 方法是用于将表单中的数据保存到数据库的核心方法。它的功能和实现可以分为几个重要的部分,下面就是我对 form.save() 方法的详细分析: 1、问题背景 在 Django 中,我们经常会使用 Form 来处理用户提交的…

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略(详细思路+matlab代码+python代码+论文范例)

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次! 完整论文+代码+数据结果链接在文末! 一、第一问 问题描述:假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于 2023 年保持稳定,每季种植的农作物在当季销售。如果某种作物每…

mysql基础知识-锁机制

文章目录 锁类型1. 共享锁(Shared Locks, S锁)2. 排他锁(Exclusive Locks, X锁)3. 意向锁(Intention Locks)4. 记录锁(Record Locks)5. 间隙锁(Gap Locks)6. …

SpringBoot和Mybatis框架怎么防止SQL注入

在 Spring Boot 和 MyBatis 中&#xff0c;防止 SQL 注入的主要方法包括&#xff1a; 1.使用 MyBatis 的动态 SQL MyBatis 提供了安全构建 SQL 查询的方式&#xff0c;推荐使用动态 SQL 标签&#xff08;如 <if>、<choose>、<foreach> 等&#xff09;构建查…

安卓玩机工具-----通用安卓玩机工具 “搞机助手”界面预览 推荐

在网络中有很多很好玩的工具。方便安卓机型联机使用各种功能。系列博文将详细的演示有些工具的特点与使用方法 搞机助手 作者&#xff1a;流水断崖 目前开发功能有&#xff1a;Twrp recovery全自动刷机&#xff0c;免Root冻结、卸载预装软件&#xff0c;免Root激活&#xff…

Azure和Transformers的详细解释

Azure AI 是微软提供的人工智能 (AI) 解决方案的集合&#xff0c;旨在帮助开发人员、数据科学家和企业轻松构建和部署智能应用程序。以下是对 Azure AI 各个方面的详细解释&#xff1a; Azure AI 主要组件 Azure Cognitive Services&#xff08;认知服务&#xff09;&#xff…

音频-语言大模型原理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

【Dash】feffery_antd_componenet 中的 AntdSpace

一、feffery_antd_componenet 中的 AntdSpace feffery_antd_components&#xff08;简称fac&#xff09;中的AntdSpace组件是一个基于Ant Design的Dash第三方组件&#xff0c;它用于在水平或垂直方向上放置多个元素&#xff0c;并提供元素之间的间距。以下是AntdSpace组件的一…

鸿蒙开发中实现自定义弹窗 (CustomDialog)

效果图 #思路 创建带有 CustomDialog 修饰的组件 &#xff0c;并且在组件内部定义controller: CustomDialogController 实例化CustomDialogController&#xff0c;加载组件&#xff0c;open()-> 打开对话框 &#xff0c; close() -> 关闭对话框 #定义弹窗 (CustomDial…

Google Maps API申请和集成到React Native应用中的教程

Google Maps API申请和集成到React Native应用中的教程 访问Google Cloud Console 打开浏览器,访问 https://console.cloud.google.com/使用您的Google账号登录 选择或创建项目 在页面顶部的项目下拉菜单中,选择现有项目或创建新项目如果创建新项目,点击"新建项目",…

本地如何快速启动静态服务器

本地快速启动静态服务器 有许多第三方库可以帮助你快速启动一个静态服务器&#xff0c;甚至无需编写代码。通过命令行运行这些库后&#xff0c;它们会自动启动一个服务器并打开指定端口&#xff0c;展示当前目录下的文件内容&#xff1a; 电脑得提前安装NodeJS 1、http-serv…

yum源404导致Could not resolve host: mirrorlist.centos.org

yum源更换错误问题记录 网上查询到的部分源过旧&#xff0c;现在已经不存在404&#xff0c;可以将报错信息中的无法访问的地址在浏览器中尝试。如下http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock这个地址就已经不在。 可以网上搜一下最新…

UI(五)常用布局总结

自适应布局 1.1、线性布局&#xff08;LinearLayout&#xff09; 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列&#xff0c;Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距&#xff0c;达到各子组件…

关于HTTP SESSION

一个浏览器客户端共享一个session&#xff0c;当浏览器请求到服务器时 通过HttpSession session request.getSession(false);来创建session。 HttpSession session request.getSession(false); 当参数为false时&#xff0c;服务器会通过sessionID找&#xff0c;如果当前服务器…

启动与登录Mysql

1.启动与停止MYSQL服务 启动MySQL 服务的命令 以管理员身份打开Windows 的命令行窗口&#xff0c;在命令提示符后输入以下命令启动MySQL 服务&#xff1a; net start[ 服务名称] 也可以直接输入以下命令&#xff1a; net start 按【Enter】键执行该命令&#xff0c;默认启…

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入&#xff08;Embedding&#xff09;方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节&#xff1a;嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以…

C#/.NET/.NET Core推荐学习路线文档文章

前言 专门为C#/.NET/.NET Core推荐学习路线&文档&文章提供的一个Issues&#xff0c;各位小伙伴可以把自己觉得不错的学习路线、文档、文章相关地址分享出来&#x1f91e;。 https://github.com/YSGStudyHards/DotNetGuide/issues/10 &#x1f3f7;️C#/.NET/.NET Cor…

【C++】栈和队列、优先级队列、适配器原理

目录 一.栈和队列相关接口 二.适配器介绍 三.栈和队列模拟实现 四.deque介绍 五.优先级队列 六.优先级队列的模拟实现 1.基本结构 2.插入删除操作 一.栈和队列相关接口 1.栈&#xff08;Stack&#xff09;的接口 由于栈接口只能支持栈顶插入&#xff08;入栈&#xff0…

机器学习-神经网络:循环神经网络(RNN)详解

引言 在当今人工智能(AI)和深度学习(DL)领域,循环神经网络(RNN)作为一种专门处理序列数据的模型,具有不可忽视的重要性。RNN 的设计目标是模拟和处理序列中的时间依赖关系,使其成为许多应用场景的理想选择,如自然语言处理(NLP)、时间序列预测和语音识别等。它不仅…

2024年高教社杯数学建模国赛C题超详细解题思路分析

本次国赛预测题目难度&#xff0c;选题人数如下所示 难度评估 A:B:C 1.8:1.3:1 D:E1.5:1 选题人数 A:B:C 1:1.5:2.8 D:E0.5:1.2 C题一直以来都是竞赛难度最低、选题人数最多的一道本科生选题&#xff0c;近三年C题的选题人数一直都是总参赛队伍的一半左右&#xff0c;2023年…