初试Docker Desktop工具

文章目录

  • 1. 概述
  • 2. 下载
  • 3. 安装
  • 4. 注册
  • 5. 登录
  • 6. 启动
  • 7. 容器
  • 8. 运行容器
    • 8.1 运行容器的镜像
    • 8.2 获取示例应用
    • 8.3 验证Dockerfile文件
    • 8.4 拉取Alpine精简镜像
    • 8.5 创建镜像
    • 8.6 运行容器
    • 8.7 查看前端
  • 9. 访问静态资源
    • 9.1 本地静态资源
    • 9.2 创建服务器脚本
    • 9.3 修改Dockerfile文件
    • 9.4 重新构建镜像
    • 9.5 删除容器
    • 9.6 运行容器
    • 9.7 访问静态资源
  • 10. 实战小结

1. 概述

  • Docker Desktop 是 Docker 官方为 Windows 与 macOS 提供的集成开发环境,内置 Docker Engine、Docker CLI、Docker Compose、Kubernetes 与资源管理界面。它通过 WSL 2(Windows)或 HyperKit(macOS)实现轻量级虚拟化,允许在本地一键构建、运行、调试 Linux 或 Windows 容器。安装后,镜像与容器在各用户间共享,支持代理、资源限额、自动更新及扩展插件,是个人开发者和小团队进行容器化开发、测试与学习的首选工具。

2. 下载

  • 下载网址:https://docs.docker.com/desktop/setup/install/windows-install/
    在这里插入图片描述

  • Docker Desktop for Windows - x86_64下载到本地
    在这里插入图片描述

3. 安装

  • 双击安装程序图标进入向导,等待几分钟,安装完成
    在这里插入图片描述

4. 注册

  • 启动Docker Desktop
    在这里插入图片描述
  • 单击【Create an account】按钮,进入注册页面
    在这里插入图片描述
  • 输入个人注册信息
    在这里插入图片描述
  • 单击【Sign up】按钮,注册成功,跳转到登录页面
    在这里插入图片描述

5. 登录

  • 输入用户名
    在这里插入图片描述
  • 单击【Continue】按钮,输入密码
    在这里插入图片描述
  • 单击【Continue】按钮,登录成功
    在这里插入图片描述

6. 启动

  • 单击【Proceed to Docker Desktop】按钮,报错说WSL需要更新
    在这里插入图片描述
  • 执行命令:wsl --update,更新WSL
    在这里插入图片描述
  • 单击【Restart】按钮,重新打开Docker Desktop
    在这里插入图片描述

7. 容器

  • 容器(Container)是 Docker 中可移植、自包含的运行单元,打包应用及其全部依赖、配置与文件系统,形成镜像的实例化对象。它共享主机操作系统内核,但拥有独立的进程、网络、文件与用户空间,因此启动秒级、资源占用低、环境一致性高。容器可在开发、测试、生产间无差异迁移,实现“一次构建,到处运行”。

8. 运行容器

8.1 运行容器的镜像

  • 我们准备用Dockerfile和一个示例应用来创建镜像
    在这里插入图片描述

8.2 获取示例应用

  • 执行命令:git clone https://github.com/docker/welcome-to-docker
    在这里插入图片描述
  • 执行命令:cd welcome-to-docker
    在这里插入图片描述

8.3 验证Dockerfile文件

  • 打开应用目录下的Dockerfile文件
    在这里插入图片描述

8.4 拉取Alpine精简镜像

  • 执行命令:docker pull node:22-alpine,拉取官方Node.js v22的Alpine精简镜像
    在这里插入图片描述
  • 输入用户名:huawei2025
    在这里插入图片描述
  • 输入密码,注意,屏幕并不回显密码
    在这里插入图片描述
  • 执行命令:winget install GnuWin32.Grep (Windows 11 已内置winget)
    在这里插入图片描述
  • 配置环境变量(C:\Program Files (x86)\GnuWin32\bin
    在这里插入图片描述
  • 于是可以在任意位置访问grep.exe程序
    在这里插入图片描述
  • 重新打开命令行窗口
    在这里插入图片描述
  • 执行命令:cd welcome-to-docker,进入应用目录
    在这里插入图片描述
  • 执行命令:grep --version,查看grep的版本
    在这里插入图片描述
  • 执行命令:docker images | grep node,确认已存在node标签为22-alpine的镜像
    在这里插入图片描述
  • Docker Desktop窗口,切换到Images选项卡,可以查看拉取的镜像 - node: 22-alpine
    在这里插入图片描述

8.5 创建镜像

  • 在应用目录里执行命令:docker build -t welcome-to-docker .
    在这里插入图片描述

  • 查看构建的镜像 - welcome-to-docker在这里插入图片描述

8.6 运行容器

  • 找到运行容器的按钮
    在这里插入图片描述
  • 单击运行按钮,弹出配置窗口
    在这里插入图片描述
  • 配置容器名、端口、挂载卷和环境变量
    在这里插入图片描述
  • 现在配置:运行一个叫my-welcome-app的容器,把本地D:\howard文件夹挂载到容器内/app/howard,并通过 http://localhost:3000访问它,同时告诉应用“我现在在生产环境运行”。
  • 单击【Run】按钮
    在这里插入图片描述

8.7 查看前端

  • 访问http://localhost:3000
    在这里插入图片描述

9. 访问静态资源

9.1 本地静态资源

  • D:\howard里放一张图片docker.png在这里插入图片描述

9.2 创建服务器脚本

  • 在应用根目录里创建server.js
    在这里插入图片描述
// server.js
const express = require('express');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 3000;// 把 /app/howard 映射成 /static
app.use('/static', express.static('/app/howard'));// 托管 React 构建产物
app.use(express.static(path.join(__dirname, 'build')));// 兜底路由:所有未匹配的请求都返回 React 的 index.html
app.get('*', (_req, res) => {res.sendFile(path.join(__dirname, 'build', 'index.html'));
});app.listen(PORT, () => {console.log(`Server is listening on port ${PORT}`);
});

9.3 修改Dockerfile文件

  • 让它先构建React,再用server.js启动
    在这里插入图片描述
# 构建阶段
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build# 运行阶段
FROM node:22-alpine
WORKDIR /app
# 安装生产依赖
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
# 拷入构建产物和后端脚本
COPY --from=build /app/build ./build
COPY server.js ./EXPOSE 3000
CMD ["node", "server.js"]

9.4 重新构建镜像

  • 执行命令:docker build -t welcome-to-docker .
    在这里插入图片描述

9.5 删除容器

  • 执行命令:docker rm -f my-welcome-app
    在这里插入图片描述

9.6 运行容器

  • 配置运行的容器
    在这里插入图片描述
  • 单击【Run】按钮
    在这里插入图片描述

9.7 访问静态资源

  • 访问http://localhost:3000/static/docker.png
    在这里插入图片描述

10. 实战小结

  • 本次实操在 Windows 11 上成功安装 Docker Desktop,通过 WSL 2 与 Hyper-V 双后端完成 Linux 容器环境搭建。注册并登录 Docker Hub 后,拉取 node:22-alpine 镜像,基于示例应用构建自定义镜像 welcome-to-docker,实现 React 前端与 Express 后端一体化部署。通过挂载本地 D:\howard 目录并映射端口 3000,实现静态资源访问与开发调试。过程中完成 WSL 更新、grep 工具安装及 Dockerfile 多阶段构建优化,验证了“一次构建,到处运行”的容器化优势,为后续微服务与 CI/CD 实践奠定坚实基础。

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

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

相关文章

百度披露Q2财报:营收327亿,AI新业务收入首超百亿

8月20日,百度发布2025年第二季度财报,显示季度总营收327亿元,百度核心营收263亿元,归属百度核心净利润74亿元,同比增长35%。受AI驱动,涵盖智能云在内的AI新业务收入增长强劲,首次超过100亿元&am…

【字母异位分组】

思路 核心思路:使用排序后的字符串作为键,将原始字符串分组 键的选择:对于每个字符串,将其排序后得到标准形式作为键分组存储:使用哈希表,键是排序后的字符串,值是对应的原始字符串列表结果构建…

高防cdn如何缓存网页静态资源

为什么需要优化网页静态资源的缓存? 网页静态资源包括图片、CSS、JavaScript等文件,它们通常体积大、访问频繁。在网页访问过程中,如果每次都从源服务器请求这些静态资源,会导致网络延迟和带宽消耗。而优化网页静态资源的缓存&am…

使用Pandas进行缺失值处理和异常值检测——实战指南

目录 一、缺失值处理 1.1 缺失值的识别 1.2 删除缺失值 1.3 填充缺失值 二、异常值检测 2.1 异常值的定义 2.2 常用检测方法 IQR(四分位数间距)法 Z-score(标准分数)法 三、实战案例:基因表达数据预处理 四…

B.30.01.1-Java并发编程及电商场景应用

摘要 本文深入探讨了Java并发编程的核心概念及其在电商系统中的实际应用。从基础并发机制到高级并发工具,结合电商业务场景中的典型问题,如高并发秒杀、库存管理、订单处理等,提供了实用的解决方案和最佳实践。 1. Java并发编程基础 1.1 并发…

怎样避免游戏检测到云手机?

以下是一些可能避免游戏检测到云手机的方法:云手机可能会因网络配置等因素出现一些异常网络行为,如网络延迟的规律性变化等,在使用云手机玩游戏时,尽量保持网络行为的稳定性和自然性,避免短时间内频繁切换网络连接&…

文件上传 --- uploadlabs靶场

目录 1 前端和js校验 抓包改包 2 . 2.1 .htaccess(伪静态) 2.2 %00截断 (php5.2) 2.3 user_init_ 2.4 3 图片码防御 4 竞争型漏洞 思路: 容易出现的问题: 1 前端和js校验 关闭JS的代码,上传PHP…

汉化版本 k6 dashboard

目前官方提供的 dashboard 只有英文版本,国内使用不方便,因此 fork 了下官方仓库,添加了汉化版本 https://github.com/kinghard7/xk6-dashboardhttps://github.com/kinghard7/xk6-dashboard安装 xk6 构建程序:go install go.k6.i…

视觉识别:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、标准RTSP地址格式

视觉识别:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、标准RTSP地址格式 ffmpeg-python 核心概念 常用过滤器(Filters) 高级操作 视频截帧转换图片示例 参考 ultralytics.YOLO(You Only Look Once) 1. 模型加载 2. 训练模型 (`train()`) 标准YAML格式示例 3. 预测 (…

浙江龙庭翔新型建筑材料有限公司全屋定制:畅享品质生活新境界!

在消费升级的时代浪潮中,浙江龙庭翔新型建筑材料有限公司以卓越的产品质量和创新的服务理念,重新定义全屋定制的内涵,为追求高品质生活的消费者打造理想家居。公司秉承"匠心质造,乐享生活"的核心价值观,将环…

鹰角网络基于阿里云 EMR Serverless StarRocks 的实时分析工程实践

一、客户背景与业务挑战 1.1 客户介绍 鹰角网络(HYPERGRYPH) 成立于2017年,总部位于上海,是中国知名游戏研发与发行公司,代表产品包括现象级手游《明日方舟》及《泡姆泡姆》《来自星辰》《终末地》等。公司依托阿里云…

LWIP的IP 协议栈

IP 协议栈 下面的分析把上文对 IPv4 概念的说明与 lwIP 中的具体实现代码对应起来,便于将理论与实现对照理解。分析覆盖:输入处理、路由与转发、输出与报文构建、分片/重组、校验和与各种配置点(hook、选项、统计等)。目录&#x…

高并发短信网关平台建设方案概述

本方案涵盖了架构设计、技术选型、核心功能、高可用保障以及实施路径,旨在构建一个能够应对千万级日吞吐量、稳定、安全、可扩展的现代短信网关平台。 高并发短信网关平台建设方案 一、 项目概述与目标 1.1 项目背景 为满足公司业务(如用户注册、登录、交易验证、营销通知…

阿里云服务-开启对象存储服务及获取AccessKey教程

(1)阿里云OSS简介 (2)打开阿里云网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 点击“立即开通” (2)开通成功后,充值任意金额 顶栏选择“费用”|“充值…

[特殊字符] 高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践

一、Nginx 和 Gateway 的关系:是替代还是协作? 不是替代关系,而是协作关系。 1. Nginx 的角色(通常在最外层) 反向代理 & 负载均衡:将前端请求分发到多个后端服务或网关实例。 静态资源服务&#xf…

解码LLM量化:深入剖析最常见8位与4位核心算法

解码LLM量化:深入剖析8位与4位核心算法 大型语言模型(LLM)的性能日益强大,但其庞大的体积和高昂的计算成本构成了部署的主要障碍。模型量化,作为一种将高精度浮点权重(如16位)映射到低位宽整数&…

提问:温度不改变 logits 与概率的排名,为何还会影响模型输出?

你此前围绕温度的核心困惑始终是:“温度不改变 logits 与概率的排名,为何还会影响模型输出?” 以下总结将紧扣这一困惑,并重点补充核采样(Top-p)在其中的作用,明确温度与核采样如何共同影响输出…

【文献阅读】Lossless data compression by large models

1. 中华人工智能研究中心,郑州。 2. 鹏程实验室,深圳。 3. 上海数学与交叉学科研究所,上海。 4. 中国科学院计算技术研究所,北京。 5. 宁波人工智能产业研究所,宁波。 6. 滑铁卢大学计算机科学学院,加拿大安…

注意力机制:捕获长距离依赖关系的革命性技术

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! ✨ 1. 注意力机制概述:为什么需要关注"长距离依赖&qu…

PHP如何使用JpGraph生成柱形图?

PHP使用JpGraph库生成各类统计图形具有显著优势,该库作为专业的PHP图表生成工具,能够高效创建包括折线图、饼图、散点图在内的多种数据可视化图形,其核心价值在于提供了丰富的图形定制能力和简洁的API接口。JpGraph通过纯PHP实现,…