Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序
Windows 系统上的 Docker 安装与使用指南
1. Windows 上配置 Docker
-
检查系统要求:使用 64 位 Windows 10/11,BIOS 已启用硬件虚拟化(VT-x/AMD-V)。Windows 版本最好更新到 2004 及以上(内部版本19041+),以支持最新 WSL 功能。
-
启用 WSL 2 功能:打开「控制面板→程序→启用或关闭Windows功能」,勾选“适用于 Linux 的 Windows 子系统 (WSL)”和“虚拟机平台”,然后重启电脑。重启后,右键以管理员身份运行 PowerShell,输入:
wsl --install
该命令会启用运行 WSL 所需的功能并安装默认的 Ubuntu Linux 发行版。完成安装后再次重启,回到 PowerShell 输入
wsl -l -v
查看已安装发行版及其 WSL 版本;若发行版仍处于 WSL1 模式,可执行wsl --set-version <发行版名> 2
将其切换到 WSL2。 -
下载并安装 Docker Desktop:访问 Docker 官网 下载 Docker Desktop for Windows 安装包。双击运行下载得到的安装程序(例如
Docker Desktop Installer.exe
),一路“下一步”完成安装。安装结束后,从「开始菜单」启动 Docker Desktop【59†L119-122】。 -
配置 Docker Desktop:启动 Docker Desktop 后,右键任务栏中隐藏的 Docker 图标,选择“设置”。在“常规”页面中勾选“使用基于 WSL 2 的引擎”【59†L121-122】。然后切换到“资源 → WSL 集成”选项卡,勾选要启用 Docker 集成的所有 WSL 2 发行版(如 Debian、Ubuntu 等)【59†L124-125】。
在 Docker Desktop 设置中的“WSL 集成”页,可以看到已安装的 WSL 2 发行版列表(如 Debian、Ubuntu-18.04/20.04 等),通过切换开关可以决定是否让 Docker 在对应发行版中运行。启用后,Docker Desktop 会使用 WSL 2 引擎来运行 Linux 容器,从而获得更好的性能和兼容性【59†L123-125】。 -
验证安装是否成功:打开一个 WSL 发行版终端(例如 Ubuntu),执行
docker --version
,若成功安装会显示 Docker 版本和内部版本号【59†L127-129】。然后运行:docker run hello-world
若输出“Hello from Docker!”等欢迎信息,说明 Docker 已安装并正常运行【59†L127-130】。
2. Docker 的基本原理和常见用途
Docker 使用容器技术来打包和运行应用。容器类似轻量级虚拟机,但它不需要完整的操作系统;容器与宿主机共享相同的 Linux 内核,只在镜像中包含运行应用所需的依赖(库、框架等),从而大幅减小体积并提高启动性能。这样,无论在何种操作系统环境中运行,容器中的应用都能保持一致的运行效果,避免环境差异导致的问题。Dockerfile 是一个文本文件,用于定义如何构建自定义镜像。Dockerfile 中按顺序写入一条条指令,每条指令会创建镜像的一层,从而逐步构建起最终镜像。通过撰写 Dockerfile,开发者可以指定基础镜像、复制代码、安装依赖等操作,最终生成自己的镜像。
Docker 可用于多种场景,例如:
- 快速搭建开发环境:可以使用 Docker 镜像封装开发所需的工具链和依赖,只需拉取镜像即可快速还原整个开发环境,避免了手工安装配置的麻烦。
- 部署深度学习模型:许多深度学习框架(如 TensorFlow、PyTorch 等)在 Docker Hub 上提供了官方镜像,支持 CPU 和 GPU(CUDA)加速。使用这些镜像可以快速搭建并隔离训练或推理环境,而不破坏本地系统配置。
- 运行数据库:可以通过容器运行 MySQL、MongoDB 等数据库服务。例如,用 Docker 运行 MySQL,只需执行
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxx mysql:8.0
等命令,即可快速部署并启动 MySQL 数据库。这种方式简洁高效,且容器化的数据库易于管理和迁移。 - 构建微服务架构:每个微服务都可以封装在独立的容器中,并使用 Kubernetes 等编排工具进行管理。结合持续集成/持续交付 (CI/CD) 体系,可以在不中断整体服务的情况下更新单个容器。这使得系统具有更好的可扩展性和可用性:新版本的容器准备就绪后,只需切换流量到新容器即可完成平滑升级,而无需停机维护。
3. 在 Docker 中运行程序
在 Docker 中运行程序时,一般分为以下几个步骤:
-
拉取镜像 (
docker pull
):通过docker pull <镜像名>
可以从公共仓库(Docker Hub)下载镜像。指出,Docker Hub 上包含了大量预构建镜像,可直接拉取使用,如常见的python:3.9-slim
、jupyter/base-notebook
等。例如:docker pull python:3.9-slim docker pull jupyter/base-notebook
-
运行容器 (
docker run
):使用docker run
命令基于指定镜像创建并启动一个新容器。命令语法为:docker run [选项] <镜像名> [执行命令]
官方文档描述,“
docker run
命令在新容器中运行指定的命令,如果本地没有该镜像,会先自动拉取镜像,然后启动容器”。例如:docker run -d --name mynginx -p 8080:80 nginx
这条命令将从 Docker Hub 拉取
nginx
镜像(如果尚未下载),在后台启动一个名为mynginx
的容器,并将容器的 80 端口映射到宿主机的 8080 端口。启动容器后,可用docker ps
查看正在运行的容器列表。 -
进入容器 (
docker exec
):如果需要在运行中的容器内执行交互命令,可以使用docker exec
。例如:docker exec -it mynginx /bin/bash
这会在
mynginx
容器中打开一个交互式 shell。根据官方文档,“docker exec
命令在正在运行的容器内执行新的命令”。可用它来启动容器内的交互式终端或执行其他任务。 -
构建自定义镜像 (
docker build
):当需要构建自定义环境时,可以编写 Dockerfile,并使用命令:docker build -t <镜像名>:<标签> .
在当前目录下的 Dockerfile 会根据文件中的指令构建镜像,并打上指定标签,以便后续使用。比如,将当前项目目录打包:
docker build -t myapp:latest .
示例:
-
示例 1 – Python 环境:使用官方 Python 镜像启动容器并运行脚本。比如:
docker run --rm -it python:3.9-slim bash
该命令会启动一个基于 Python 3.9 的交互式容器,并进入 bash 终端。在容器中可执行
python script.py
运行脚本,容器退出后自动删除(--rm
)。 -
示例 2 – Jupyter Notebook 环境:使用 Jupyter 官方镜像启动一个 Notebook 服务。比如:
docker run -d -p 8888:8888 jupyter/base-notebook
这会拉取
jupyter/base-notebook
镜像并运行一个后台容器,将容器的 8888 端口映射到本地 8888 端口(可在浏览器访问 http://localhost:8888)。运行后,容器日志中会显示访问令牌,输入到浏览器即可使用 JupyterLab/Notebook。该镜像已预装常用数据科学库,可直接用于深度学习实验。
通过上述步骤,即可在 Windows 平台上使用 Docker Desktop 配置和运行容器化环境,实现快速搭建开发环境、部署模型和服务的目的。
参考资料: Docker 官方文档及教程。
相关文章:
Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序
Windows 系统上的 Docker 安装与使用指南 1. Windows 上配置 Docker 检查系统要求:使用 64 位 Windows 10/11,BIOS 已启用硬件虚拟化(VT-x/AMD-V)。Windows 版本最好更新到 2004 及以上(内部版本19041)&am…...
CBCharacteristic:是「特征」还是「数据通道」?
目录 名词困惑:两种中文译法的由来官方定义 & 开发者视角乐高类比:文件夹与文件智能手表实例:Characteristic 长什么样?iOS 代码实战:读 / 写 / 订阅小结 & Best Practice 1. 名词困惑:为什么有两…...
【JavaEE】多线程
线程 在Java中,鼓励多线程编程。进程可以满足并发编程,但是效率不高(创建、销毁、调度时间都比较长,这些都消耗在申请资源上了),而线程就不一样。 线程也叫“轻量级进程”,创建、销毁、调度都更…...
docker- Harbor 配置 HTTPS 协议的私有镜像仓库
Harbor通过配置 HTTPS 协议,可以确保镜像传输的安全性,防止数据被窃取或篡改。本文将详细介绍如何基于 Harbor 配置 HTTPS 协议的私有镜像仓库。 1.生成自建ca证书 [rootdocker01 ~]# mkdir -p /liux/softwares/harbor/certs/custom/{ca,server,client…...
[SpringBoot]Spring MVC(5.0)----留言板
Spring留言板实现 预期结果 可以发布并显示点击提交后,显示并清除输入框并且再次刷新后,不会清除下面的缓存 约定前后端交互接口 Ⅰ 发布留言 url : /message/publish . param(参数) : from,to,say . return : true / false . Ⅱ 查询留言 url : /messag…...
Jules 从私有预览阶段推向全球公测
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
vLLM框架高效原因分析
vLLM框架在模型推理中以高效出名,主要基于以下核心原理和技术优化,这些设计使其在处理大语言模型时显著提升性能: 一、PagedAttention:动态显存管理技术 vLLM的核心创新在于PagedAttention,灵感源自操作系统的虚拟内存…...
【Git】常用命令大全
以下是 Git 的常用命令大全,分为几个常见类别,便于理解和使用: 1. 初始化与克隆 初始化本地仓库:git init克隆远程仓库到本地:git clone <repository_url> 2. 添加与提交 添加指定文件到暂存区:git…...
pycharm无需科学上网工具下载插件的解决方案
以下是两种无需科学上网即可下载 PyCharm 插件的解决思路: 方法 1:设置 PyCharm 代理 打开 PyCharm选择菜单:File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理设置中进行如下配置: 代理地…...
学习threejs,使用Physijs物理引擎,使用DOFConstraint自由度约束,模拟小车移动
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...
仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑
幽蓝君发现一个问题,仓颉开发语言距离发布马上一年了,一些知名App已经使用仓颉开发了许多功能,但是网络上关于仓颉开发语言的教程少之又少,系统性的教程更是没有,仓颉官网的文档也远远不如ArkTS详尽。 现阶段对于想学…...
[Git] 初识 Git 与安装入门
告别文件噩梦:初识 Git 与安装入门 嘿,朋友!不知道你是不是也遇到过这样的情况:你在写一份重要的文档、报告,或者更常见的,一段代码时,为了安全起见,怕改错了回不去,或者…...
海康威视摄像头C#开发指南:从SDK对接到安全增强与高并发优化
一、海康威视SDK核心对接流程 1. 开发环境准备 官方SDK获取:从海康开放平台下载最新版SDK(如HCNetSDK.dll、PlayCtrl.dll)。依赖项安装:确保C运行库(如vcredist_x86.exe)与S…...
大语言模型 14 - Manus 超强智能体 开源版本 OpenManus 上手指南
写在前面 Manus 是由中国初创公司 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体(AI Agent),旨在实现“知行合一”,即不仅具备强大的语言理解和推理能力,还能自主执行复杂任务,直接交付完整成…...
使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]
以下能帮助你可以使用任何开发语言,在任何平台都能使用 LibreOffice 实现 Word、Excel、PPT 等文档的自动转换,目前展示在 ASP.NET Core 中为 PDF的实战案例,其他的文档格式转换逻辑同理。 📦 1. 安装 LibreOffice 🐧…...
CentOS Stream 9 中部署 MySQL 8.0 MGR(MySQL Group Replication)一主两从高可用集群
🐇明明跟你说过:个人主页 🏅个人专栏:《MySQL技术精粹》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、MySQL 8.0 中的高可用方案 2、适用场景 二、环境准备 1、系统环境说明…...
软考中级软件设计师——计算机网络篇
一、计算机网络体系结构 1.OSI七层模型 1. 物理层(Physical Layer) 功能:传输原始比特流(0和1),定义物理介质(如电缆、光纤)的电气、机械特性。 关键设备:中继器&#…...
RK3568 OH5.1 源码编译及问题
安装编译器和二进制工具 在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。 bash build/prebuilts_download.sh在源码根目录执行如下指令安装hb编译工具: python3 -m pip install --user build/hb使用build.sh脚本编译源码 进入源码根目录&…...
【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题
一、razor的echo程序 根据对 yuanrongxi/razor 仓库的代码和 echo 测试程序相关实现的分析,下面详细解读 echo 程序中 RTCP sender report(SR)、receiver report(RR)回显的问题及项目的解决方式。 1. 问题背景 在 RTP/RTCP 体系下,SR(Sender Report)由发送端周期性发…...
leetcode hot100:三、解题思路大全:哈希(两数之和、字母异位词分组、最长连续序列)、双指针(移动零、盛最多水的容器、三数之和、接雨水)
哈希 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返…...
MySQL 8.0 OCP 1Z0-908 161-170题
Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…...
onlyoffice 源码 调试说明 -ARM和x86双模式安装支持
很多用户在调试onlyoffice源码最大的问题是如何搭建环境,这个难度很高,下面提供一键安装的方式,让普通用户也能快速调试源码。 OnlyOffice Document Server 基于源码运行的容器调试模式,凭借 Docker 容器化技术的核心优势,为开发者提供了跨平台、高兼容性…...
workflow:高效的流式工作架构
引言 workflow是sougou的一款开源框架 主要是以请求回应的模式解决各自网络/IO任务而发明的 一.workflow的任务流 1.workflow都封装了哪些任务流 以请求回应的模式来解释 ① 网络层 服务端 在服务端的request 相当于发送了一个获取客户端请求的请求,response相当…...
音视频之H.265/HEVC速率控制
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...
jsmpeg+java+ffmpeg 调用摄像头RTSP流播放
原理就是这样,明白吧。本次用springboot netty起这个2个服务,执行拉代码执行即可 <!-- netty --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.68.Final</ver…...
深度剖析ZooKeeper
1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…...
Zookeeper 集群安装与脚本化管理详解
安装之前:先关闭所有服务器的防火墙!!!!!!!!!!!! systemctl stop firewalld 关闭防火墙 systemctl disable firewalld 开机不启动防火…...
第10天-Python操作MySQL数据库全攻略:从基础连接到高级应用
一、环境准备 1. 安装MySQL驱动 bash 复制 下载 # 官方推荐驱动 pip install mysql-connector-python# 或使用PyMySQL(兼容性更好) pip install pymysql 2. 创建测试数据库 sql 复制 下载 CREATE DATABASE python_db; USE python_db;CREATE TABLE users (id INT AU…...
Spring Cloud Gateway深度解析:原理、架构与生产实践
文章目录 前言一、概述二、核心架构设计及设计原理2.1 分层架构模型网络层(I/O模型)核心处理层 2.2 核心组件协作流程路由定位阶段过滤器执行阶段 2.3 响应式编程模型实现Reactor上下文传递背压处理机制 2.4 动态路由设计原理2.5 异常处理体系2.6 关键路…...
Trae 04.22版本深度解析:Agent能力升级与MCP市场对复杂任务执行的革新
我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:Trae - AI 原生 IDE 目录 引言 一、Trae 04.22版本概览 二、统一对话体验的深度整合 2.1 Chat与Builder面板合并 2.2 统一对话的优势 三、上下文能力的显著增强 3.1 W…...
股指期货模型,简单易懂的套利策略
在股指期货投资领域,有不少实用的模型和策略,今天咱们就用大白话来唠唠其中几个重要的概念。 一、跨期套利:合约间的“差价游戏” 跨期套利简单来说,就是投资者以赚取期货合约之间的价差为目的,在同一个期货品种的不…...
MySQL 故障排查与生产环境优化
目录 1. MySQL单实例故障排查 2. MySQL 主从故障排查 3. MySQL 优化 3.1 硬件方面 3.2 MySQL 配置文件 3.3 SQL 方面 1. MySQL单实例故障排查 (1) 故障现象1 ERROR 2002 (HY000): Cant connect to local MySQL server through socket /data/mysql…...
Java泛型 的详细知识总结
一、泛型的核心作用 类型安全:在编译期检查类型匹配,避免运行时的ClassCastException。代码复用:通过泛型逻辑统一处理多种数据类型。消除强制转换:减少显式的类型转换代码。 二、泛型基础语法 1. 泛型类/接口 定义:…...
k8s 配置 Kafka SASL_SSL双重认证
说明 kafka提供了多种安全认证机制,主要分为SASL和SSL两大类。 SASL: 是一种身份验证机制,用于在客户端和服务器之间进行身份验证的过程,其中SASL/PLAIN是基于账号密码的认证方式。 SSL: 是一种加密协议,…...
电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式
一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下,电商交易的复杂性与日俱增,传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案,通过构建“主账户子账户”的虚拟账户…...
从混乱到高效:我们是如何重构 iOS 上架流程的(含 Appuploader实践)
从混乱到高效:我们是如何重构 iOS 上架流程的 在开发团队中,有一类看不见却至关重要的问题:环境依赖。 特别是 iOS App 的发布流程,往往牢牢绑死在一台特定的 Mac 上。每次需要发版本,都要找到“那台 Mac”ÿ…...
01 基本介绍及Pod基础
01 查看各种资源 01-1 查看K8s集群的内置资源 [rootmaster01 ~]# kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 …...
DAY31-文件的规范拆分和写法
知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 (一)文件拆分 思考:如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个…...
[创业之路-369]:企业战略管理案例分析-9-战略制定-差距分析的案例之华为
一、综合案例 在战略制定中,华为通过差距分析明确战略方向,以应对市场挑战和实现长期发展目标。 以下为具体案例与分析: 1、案例背景 华为在通信设备领域崛起过程中,始终将差距分析作为战略制定的核心环节。面对国际竞争对手&…...
【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动
文章目录 前言一、HUAWEI MateBook Fold 非凡大师(一)非凡设计(二)非凡显示(三)非凡科技(四)非凡系统(五)非凡体验 二、HUAWEI MateBook Pro三、预热…...
深入理解Redis Cluster:架构、原理与实践
Redis 是一个高性能的键值存储数据库,广泛应用于缓存、会话存储、消息队列等场景。随着数据量和并发量的增长,单机 Redis 可能面临性能瓶颈和单点故障问题。为了解决这些问题,Redis 提供了 Redis Cluster,一种分布式解决方案&…...
分析 redis 的 exists 命令有一个参数和多个参数的区别
在 redis 中,exists 命令是用来查询某个或多个 key 是否存在的,返回存在的 key 的个数。 由于 redis 是按照键值对方式存储数据的,于是一个 key 只能对应一组数据,那么上述的 key 的个数指的即是需要查询的 key 中有几个 key 是存…...
[概率论基本概念1]什么是经验分布
一、说明 描述一个概率模型,有密度函数很好描述。如果写不出密度函数,退而用分布函数也能完整刻画,因此,分布函数表示比密度函数表示更加宽泛普适。本片讲述经验分布拟合分布函数的基础概念。 二、经验分布直观解释 在统计学中…...
使用Java实现Navicat密码的加密与解密
在日常开发过程中,我们有时需要处理各种软件保存的凭据信息,比如数据库连接密码等。这篇文章将介绍如何使用Java对Navicat保存的数据库密码进行加密和解密。 一、背景介绍 Navicat是一款强大的数据库管理工具,支持多种数据库系统。为了保护…...
怎么样进行定量分析
本文章将教会你如何对实验结果进行定量分析,其需要一定的论文基础,文末有论文撰写小技巧,不要看基础原理的人可以直接调到文章末尾。 一、什么是定量分析 定量分析是一种基于数据和数学模型的分析方法,它在众多领域中发挥着至关…...
python学习day2
今天主要学习了变量的数据类型,以及如何使用格式化符号进行输出。 一、认识数据类型 在python里为了应对不同的业务需求,也把数据分为不同的类型。 代码如下: """ 1、按类型将不同的变量存储在不同的类型数据 2、验证这些…...
FreeMarker
概述:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序…...
JDK 21新特性详解
JDK 21新特性详解:现代Java开发的重大更新 Java开发工具包(JDK)21作为最新的长期支持(LTS)版本,于2023年9月发布,带来了许多令人兴奋的新特性。作为Java开发者,了解这些新功能对于保持技术竞争力至关重要。本文将详细介绍JDK 21中…...
使用MCP驱动IDA pro分析样本
最近国外的牛人开发了一个ida pro的mcp server,项目的地址为mrexodia/ida-pro-mcp: MCP Server for IDA Pro,实现了通过自然对话来分析样本。 今天我们试用一下。 MCP Server for IDA Pro项目简介 这个mcp server提供下面这些工具,基本涵盖…...
Web前端开发:@media(媒体查询)
什么是媒体查询? 媒体查询是CSS3的一个功能,允许你根据设备的特性(如屏幕宽度、设备方向、分辨率等)应用不同的CSS样式。简单来说,就是让网页在不同设备上(手机、平板、电脑)自动调整布局和样式…...