Windows 11 搭建 Docker 桌面版详细教程
在当今的软件开发与部署领域,Docker 已成为一项极为重要的容器化技术。它能够让开发者轻松地打包应用及其依赖项,实现跨环境的一致性运行,大大提高了开发效率与部署的便捷性。本教程将详细介绍在 Windows 11 操作系统上搭建 Docker 桌面版的具体步骤,并且由于 Docker 在 Windows 11 上与 WSL2(Windows Subsystem for Linux 2)有着紧密的关联,我们也会对 WSL2 进行详细介绍并讲解其安装过程。
一、WSL2 简介
WSL2 是适用于 Windows 11 的 Windows 子系统的一个新版本,它提供了更完整的 Linux 内核功能以及更好的系统性能。与传统的 Windows 应用运行环境不同,WSL2 能够在 Windows 系统上原生运行 Linux 二进制可执行文件,这使得开发者可以在 Windows 11 上无缝地使用各种 Linux 工具和环境,并且与 Docker 配合使用时能够提供更出色的容器化体验。
WSL2 相比 WSL1 具有以下显著优势:
-
完整的 Linux 内核:WSL2 包含了一个真正的 Linux 内核,这使得它能够运行更多类型的 Linux 应用,并且在系统调用和文件系统方面具有更好的兼容性和性能表现。例如,一些需要特定 Linux 内核特性的应用或工具,如 Docker 所依赖的一些底层功能,在 WSL2 中能够更好地运行。 -
显著提升的文件系统性能:WSL2 采用了新的虚拟硬盘格式(.vhdx)以及 9P 协议来与 Windows 文件系统交互,这大大提高了文件系统的读写速度。在使用 Docker 时,容器内文件的操作速度更快,从而提升了容器的启动速度和整体性能。 -
更好的系统隔离性:WSL2 与 Windows 系统之间具有更好的隔离性,每个 WSL2 实例都运行在独立的轻量级虚拟机中,这有助于提高系统的安全性和稳定性,并且避免了不同应用或容器之间的相互干扰。
二、WSL2 安装
在安装 Docker 桌面版之前,先确保 WSL2 已经正确安装并配置。以下是在 Windows 11 上安装 WSL2 的步骤:
-
以管理员身份打开 Windows PowerShell。可以通过在“开始”菜单中搜索“PowerShell”,然后右键点击并选择“以管理员身份运行”。 -
运行以下命令来启用 WSL 功能(如果尚未启用):
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
接着启用虚拟机平台功能,这是 WSL2 运行所必需的:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-
重启计算机以使上述设置生效。 -
计算机重启后,再次打开 Windows PowerShell,运行以下命令来下载并安装适用于 x64 计算机的 Linux 内核更新包:
wsl --update
-
将 WSL2 设置为默认版本,运行以下命令:
wsl --set-default-version 2
-
安装你所选择的 Linux 发行版。例如,要安装 Ubuntu,可以在 Microsoft Store 中搜索“Ubuntu”,然后点击“获取”按钮进行安装。安装完成后,从“开始”菜单中启动 Ubuntu,它会提示你设置用户名和密码,按照提示完成设置即可。
三、系统要求与准备工作
在完成 WSL2 安装后,继续进行 Docker 桌面版的安装准备工作。首先确保你的 Windows 11 系统满足以下要求:
-
Windows 11 专业版或企业版(家庭版不支持)。 -
系统必须启用了硬件虚拟化功能。这通常需要在计算机的 BIOS 或 UEFI 设置中开启,具体的开启方式因计算机型号而异。一般可以在开机时按下对应的按键(如 Del、F2、F10 等)进入 BIOS/UEFI 设置界面,然后找到“Virtualization Technology”或类似选项并将其设置为“Enabled”。 -
至少拥有 4GB 的系统内存(建议 8GB 或更多以获得更好的性能)。 -
有足够的磁盘空间用于存储 Docker 镜像、容器以及相关数据。
完成上述系统要求检查后,还需要进行以下准备工作:
-
确保系统已安装了最新的 Windows 更新。这可以通过点击“开始”菜单,选择“设置”,然后进入“更新和安全”页面,点击“检查更新”按钮来完成。 -
禁用或卸载可能与 Docker 冲突的软件,如一些虚拟机软件(如 VirtualBox,如果之前安装过)或其他容器化工具。
四、下载 Docker 桌面版
-
打开浏览器,访问 Docker 官方网站(https://www.docker.com/products/docker-desktop)。 -
在网站页面上找到适合 Windows 11 的 Docker 桌面版下载链接。通常会有一个明显的“Download for Windows”按钮,点击它开始下载安装程序。
五、安装 Docker 桌面版
-
下载完成后,找到下载的安装程序文件(一般为.exe 格式),双击运行它。 -
在安装向导的欢迎页面,点击“Next”按钮继续。 -
选择安装的目标文件夹。可以使用默认的安装路径,也可以点击“Browse”按钮选择其他磁盘位置,然后点击“Next”。 -
选择是否创建桌面快捷方式和开始菜单快捷方式,根据个人喜好进行选择后点击“Next”。 -
在接下来的页面中,会看到关于 Hyper-V 和 Windows 容器的相关设置选项。由于 Windows 11 专业版和企业版支持 Hyper-V,建议选择使用 Hyper-V 作为后端(这将自动安装和配置 Hyper-V,如果尚未安装),然后点击“Next”。 -
查看安装设置的摘要信息,如果确认无误,点击“Install”按钮开始安装。安装过程可能需要一些时间,期间系统可能会自动重启以完成 Hyper-V 的安装和配置(如果是首次安装 Hyper-V)。
六、配置 Docker 桌面版
-
安装完成后,Docker 桌面版会自动启动。首次启动时,它会在系统托盘区显示一个小鲸鱼图标。 -
右键点击该图标,选择“Settings”选项,打开 Docker 设置窗口。 -
在设置窗口中,可以对 Docker 的各种参数进行配置,如: -
General(常规):可以设置是否在 Windows 启动时自动启动 Docker,以及选择使用的容器运行时(默认是 runc)。 -
Resources(资源):配置 Docker 可使用的 CPU 和内存资源比例。可以根据系统的硬件配置和其他应用的资源需求进行合理调整。例如,如果你的系统同时运行多个大型应用,可以适当减少 Docker 的资源分配,反之则可以增加以提高容器的性能。 -
Docker Engine(Docker 引擎):这里可以设置 Docker 引擎的一些高级参数,如镜像仓库地址、容器网络配置等。对于大多数普通用户,使用默认值即可。如果需要使用自定义的镜像仓库或配置特殊的网络模式,可以在这里进行修改。
-
-
配置完成后,点击“Apply & Restart”按钮使设置生效并重新启动 Docker 服务。
七、验证安装
-
打开命令提示符(CMD)或 Windows PowerShell。可以通过在“开始”菜单中搜索“cmd”或“PowerShell”来找到并打开它们。 -
在命令提示符或 PowerShell 中输入以下命令:
docker --version
如果安装成功,将会显示 Docker 的版本信息,例如:
Docker version 20.10.12, build e91ed57
-
接着输入以下命令来运行一个简单的测试容器:
docker run hello-world
如果一切正常,将会看到类似于以下的输出:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
- The Docker client contacted the Docker daemon.
- The Docker daemon pulled the “hello-world” image from the Docker Hub.
- The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading. - The Docker daemon streamed that output to theDocker client, which sent it
to your terminal.
To try something more ambitious, you can run an image that runs a full Linux
distribution as its “rootfs”. Try this by running the following:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
这表明 Docker 已经成功安装并且能够正常运行容器。
通过以上详细的步骤,你已经在 Windows 11 系统上成功搭建了 Docker 桌面版,并在 WSL2 的支持下,能够更好地利用 Docker 进行容器化应用的开发、测试和部署等工作,享受容器化技术带来的便利与高效。
相关文章:
Windows 11 搭建 Docker 桌面版详细教程
在当今的软件开发与部署领域,Docker 已成为一项极为重要的容器化技术。它能够让开发者轻松地打包应用及其依赖项,实现跨环境的一致性运行,大大提高了开发效率与部署的便捷性。本教程将详细介绍在 Windows 11 操作系统上搭建 Docker 桌面版的具…...
Pytest-Bdd-Playwright 系列教程(13):钩子(hooks)
Pytest-Bdd-Playwright 系列教程(13):钩子(hooks) 前言一、什么是钩子?二、Pytest-Bdd 提供的钩子一览三、钩子用法详解1. pytest_bdd_before_scenario2. pytest_bdd_after_scenario3. pytest_bdd_before_s…...
dns 服务器简单介绍
dns 服务器分类: 根域名服务器顶级域名服务器权威域名服务器本地域名服务器 dns 的查询过程 国内优秀公共域名 腾讯:DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS-烟台帝思普网络科技有限公司 119.29.29.29 和 182.254.118.118 阿里…...
Neo4j图形数据库-Cypher中常用指令
一、创建与修改 1.1 create 创建图数据库中的节点、关系等元素: CREATE (:Person {name: "Alice", age: 30}) CREATE (p1:Person {name: "Bob"})-[r:KNOWS]->(p2:Person {name: "Charlie"})批量创建元素 CREATE (n1:Node),(n2…...
linux安全管理-防火墙配置
1. 开启系统防火墙 1、检查内容 检查操作系统是否开启防火墙; 2、配置要求 操作系统开启防火墙; 3、配置方法 systemctl status firewalld ##查看系统防火墙运行状态 systemctl start firewalld ##启动防火墙 systemctl restart firewalld ##重启防火墙…...
什么是BIOS
BIOS(Basic Input/Output System,基本输入输出系统)是计算机启动过程中的一个关键组件,主要负责硬件的初始化和系统的引导。以下是关于 BIOS 的一些详细信息: 1. 基本功能 硬件初始化:当计算机启动时&…...
c++视频图像处理
打开视频或摄像头 打开指定视频 /*VideoCapture(const String &filename, apiPreference);filename:读取的视频或者图像序列的名称apiPreference:读取数据时设置的属性*/ VideoCapture video; //定义一个空的视频对象 video.open("H:/BaiduNetdiskDownlo…...
音视频入门基础:MPEG2-TS专题(8)——TS Header中的适配域
注:本文有部分内容引用了维基百科:https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 当TS Header中的adaptation_field_control属性的值为10或11 时,TS Header包含adaptation field(适配域): 根据《T-RE…...
基于stm32单片机的教室节能系统设计
功能描述 0. STM32F103C8T6单片机为控制核心 1. OLED液晶显示当前年 月 日 时 分 秒 星期 2. 按键可以设置定时时间 3. 按键可以设置用电开关的开启和关闭时间,实现设备的节能 4. 通过红外遥控可以打开关闭空调设备(通过继电器开关闭合模拟&#x…...
mini主机通过内网穿透做成服务器
文章目录 简介1.ubuntu 的ssh server 安装2.ubuntu 的docker 安装3.ubuntu的curl的安装4.ubuntu的frp客户端安装5.ubuntu的docker compose安装6.声明 简介 主要目的 本地设备做成服务器,实现ssh远程登录以及内网穿透设备总成本1千多元(其实部分设备可以…...
智能桥梁安全运行监测系统守护桥梁安全卫士
一、方案背景 桥梁作为交通基础设施中不可或缺的重要组成部分,其安全稳定的运行直接关联到广大人民群众的生命财产安全以及整个社会的稳定与和谐。桥梁不仅是连接两地的通道,更是经济发展和社会进步的重要纽带。为了确保桥梁的安全运行,桥梁安…...
Selenium和Pyppeteer有什么区别?
Selenium和Pyppeteer都是自动化测试工具,它们可以模拟用户在浏览器中的操作,但它们之间存在一些关键的区别: Selenium 跨浏览器支持:Selenium支持多种浏览器,包括Chrome、Firefox、Internet Explorer等,而…...
82从零开始学Java之异常处理机制简介
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 大家可以想一个问题,有没有谁能够做到开发项目时一个错误都不发生?如果谁能够做到这一点,那他可能真的是“天才”!但实际上,任何人都不可能在项目开发…...
Git上传本地项目到远程仓库(gitee/github)
目录 序言一、创建git本地版本库二、连接远程仓库(以gitee为例)三、将项目提交到git(本地)版本库1.由工作区添加到暂存区2.由暂存区添加到版本库 四、将代码由本地仓库上传到 gitee远程仓库1.获取远程库与本地同步2.把当前分支 ma…...
华为仓颉编程环境搭建
1、仓颉介绍 摘自华为官方:仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的 IDE 工具链支持,为开发者打造友好开发体验和卓越程序性能。 其具体特性表现为&am…...
UE5 Line Trace By Channel(通道线条追踪)节点
在 Unreal Engine 5 (UE5) 中,Line Trace By Channel 是一个常用于进行物理射线检测(raycasting)的节点。它会沿着一条从起点到终点的直线发射一条射线,并检测射线与世界中任何物体的碰撞。这个节点广泛应用于枪械射击、检测物体、…...
DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲
本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频: 你也可以直接通过Bilibili链…...
UDP客户端服务器通信
在这篇博客中,我们将探索 UDP(用户数据报协议) 通信,简要地说,UDP 是一种无连接、快速但不可靠的通信协议,适用于需要快速数据传输但对丢包容忍的场景,比如视频流和在线游戏。就像《我是如此相信…...
适合中小型公司的自动化测试的测试框架,OpenSourceTest
适合中小型公司的自动化测试的测试框架,OpenSourceTest 文档地址: http://docs.opensourcetest.cn/代码仓库: https://github.com/chineseluo/opensourcetest安装方式: pip3 install opensourcetest -i https://pypi.tuna.tsin…...
实现跨语言通信:Rust 和 Thrift 的最佳实践
前言 在分布式系统中,服务之间高效且安全的通信至关重要。Apache Thrift 是一个被广泛应用的跨语言 RPC(远程过程调用)框架,它支持多种编程语言,包括 Rust。Rust 以其卓越的性能和内存安全保障,成为越来越…...
js判断空对象
1. 使用 Object.keys() 方法 Object.keys(obj) 方法返回一个包含对象可枚举属性名称的数组。如果返回的数组长度为 0,表示对象为空。 const isEmpty (obj) > Object.keys(obj).length 0;// 示例 const emptyObject {}; const nonEmptyObject { key: value …...
visionpro官方示例分析(一) 模板匹配工具 缺陷检测工具
1.需求:找出图像中的这个图形。 2.步骤 使用CogPMAlignTool工具,该工具是模板匹配工具,见名知意,所谓模板匹配工具就是说先使用该工具对一张图像建立模板,然后用这个模板在其他图像上进行匹配,匹配上了就说…...
PyCharm中Python项目打包并运行到服务器的简明指南
目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…...
cocos creator 3.8 合成大西瓜Demo 11
界面上的Node节点: 背景 警戒线 三面墙 初始位置节点 水果容器 先分组吧,墙 地板 水果 创建预制体 先挂一个脚本 刚体碰撞器先弄上再说 import { _decorator, Component, Node } from cc; const { ccclass, property } _decorator;ccclass(FruitData) e…...
Vue前端开发-动态插槽
不仅父组件可以通过插槽方式访问并控制子组件传入的数据,而且可以控制传入父组件时插槽的名称,从而使不同的插槽根据名称的不同,使用场景也不同,例如在一个小区详细页中,可以根据小区类型,调用不同名称的详…...
使用easyexcel导出复杂模板,同时使用bean,map,list填充
背景 在使用easyexcel导出时,如果遇到一个模板中同时存在 一部分是实体类中的字段,另外部分是列表的字段,需要特殊处理一下,比如下面的模板: 这里面 user, addr 是实体类(或者map)…...
最大值(Java Python JS C++ C )
题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 示例1 输入:[10,9] 输出:910 说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 输入描述 数字组合 输出描述 最大的整数 示例1 输入 10 9输出 910解题思路 题目要求 是:给定一…...
17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台
项目介绍 ThingsBoard是一个开源、免费、功能全面、灵活易用的物联网(IoT)平台,专注于数据收集、处理、可视化以及设备管理。它提供了一个全面的解决方案,用于构建和管理物联网应用。支持从各种设备收集数据,通过内置…...
《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
在深度学习蓬勃发展的今天,神经网络成为了众多领域的核心技术驱动力。而反向传播算法作为训练神经网络的关键手段,其背后的自动微分技术的高效实现尤为重要,特别是在 C 这样追求性能与内存控制极致的编程语言环境下。 神经网络通过大量的参数…...
【CSS】设置文本超出N行省略
文章目录 基本使用 这种方法主要是针对Webkit浏览器,因此可能在一些非Chrome浏览器中不适用。 基本使用 例如:设置文本超出两行显示省略号。 核心代码: .ellipsis-multiline {display: -webkit-box; -webkit-box-orient: vertical; /* 设置…...
深圳网站开发antnw/南宁seo服务优化
首先来看,jquery里自带的,和json相关的函数:1.$.parseJSON : 用来解析JSON字符串,返回一个对象。什么叫“JSON字符串”?比如:var a{name:"aijquery",url:"www.aijquery.cn"};上面定义的变量a是…...
温州制作网站软件/实体店引流推广方法
PHP中两个数组合并可以使用或者array_merge,但之间还是有区别的,本篇文章介绍的就是PHP数组合并与array_merge的区别分析和对多个数组合并去重技巧 ,有需要的朋友可以看一下本文。主要区别是两个或者多个数组中如果出现相同键名,键…...
网站维护 推广/口碑营销经典案例
目录 背景 下载war包 以java可执行文件运行 访问Jenkins 配置插件 测试插件安装 背景 上一篇文章,作者已经分享了再window环境下如何使用Jenkins的msi版本,但是这个版本的不好地方就是插件安装出现瓶颈。虽然上一篇文章在最后也分享了一种基于手动…...
天长市城乡规划建设局网站/西安企业seo外包服务公司
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!一个标准的web应用程序,打包成wa…...
wordpress网站自动伪原创/seo优化神器
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串…...
上海网站设计工作室/培训心得体会
也许你曾遇到过这样的情况运行类似的代码StreamReader srnewStreamReader("Test.txt");运行时会提示:"Could not find file C:"windows"system32"Test.txt".这就是路径不对造成的幸好在asp.net的request对象中有许多与路径相关的…...