一篇搞定!Docker Desktop + WSL2 从安装配置到核心应用实战

一篇搞定!Docker Desktop + WSL2 从安装配置到核心应用实战
文章目录1、安装Docker Desktop1.1 访问Docker官网获取安装包1.2 支持命令行安装1.3 首次安装Docker Desktop需要配置WSL环境或者Hyper-V2、WSL needs updating2.1 此处遇到WSL需要更新的警告信息,按照提示进行更新即可。2.2 powershell下执行命令`wsl --install`2.3 WSL更新后重启Docker Desktop2.4 WSL设置与工作页面3、WSL(Windows Subsystem for Linux)3.1 说明3.2 官方文档3.3 查看wsl版本3.4 WSL 版本功能说明3.5 WSL命令4、通过Docker Desktop运行容器5、通过Docker Desktop管理镜像5.1 镜像管理5.2 容器管理5.3 支持AI Models和MCP生态

1、安装Docker Desktop

Docker Desktop 是一个多合一软件包,用于构建镜像、运行容器等等。

Docker Desktop 包括 Docker Compose、Docker Engine 和 Docker CLI组件,对开发者使用Docker环境非常友好。

1.1 访问Docker官网获取安装包

访问docs.docker.top下载Docker Desktop,下载地址为https://docs.docker.top/get-started/introduction/get-docker-desktop/index.htm

下载好安装包后,双击Docker Desktop Installer.exe运行安装程序。默认情况下,Docker Desktop 安装在C:\Program Files\Docker\Docker。

在这里插入图片描述


在这里插入图片描述

1.2 支持命令行安装

比如Windows下使用Powershell窗口执行命令Start-Process 'Docker Desktop Installer.exe' -Wait install进行安装。

支持修改安装路径--installation-dir=<path>更改默认安装位置 (C:\Program Files\Docker\Docker)。 PowerShell,需要使用ArgumentList参数

  • 示例
    Start-Process 'Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--installation-dir=D:\Docker'

1.3 首次安装Docker Desktop需要配置WSL环境或者Hyper-V

Docker Desktop 的功能在 WSL 和 Hyper-V 上保持一致,对任何架构都没有偏好。Hyper-V 和 WSL 各有优缺点,具体取决于您的特定设置和计划用例。

根据个人电脑环境推荐建议去选择,此处用的是WSL2。

2、WSL needs updating

此处安装 Docker Desktop 后打开提示需要WSL配置

2.1 此处遇到WSL需要更新的警告信息,按照提示进行更新即可。

Your version of Windows Subsystem for Linux (WSL) is too old. Run the command below to update or for more information, visit .the Microsoft WSL documentation⁠

在这里插入图片描述

2.2 powershell下执行命令wsl --install

通过Win+R快捷键弹出运行弹窗,输入powershell回车,即可打开 Windows PowerShell,输入命令回车等待安装完成。

在这里插入图片描述

2.3 WSL更新后重启Docker Desktop

在这里插入图片描述
在这里插入图片描述

2.4 WSL设置与工作页面

WSL更新完成后,自动打开了如下欢迎页面。

在这里插入图片描述

可以在Win下主动搜索WSL及WSL Settings,如下所示。

3、WSL(Windows Subsystem for Linux)

3.1 说明

适用于 Linux 的 Windows 子系统(WSL)允许开发人员直接在 Windows 上运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),无需传统虚拟机或双启动设置的开销。

3.2 官方文档

https://learn.microsoft.com/zh-cn/windows/wsl/

3.3 查看wsl版本

在powershell窗口输入命令wsl --list --verbose查看

C:\Users\Administrator>wsl --list --verbose NAME STATE VERSION * docker-desktop Running 2 

3.4 WSL 版本功能说明

在这里插入图片描述

3.5 WSL命令

  • 安装命令wsl --install
  • 更新命令wsl --update
  • 检查状态wsl --status
  • 检查版本wsl --version
  • 关机wsl --shutdown
  • 查询可用的linux分发版wsl --list --online
  • 查询已安装的linux分发版wsl --list --verbose
  • 设置默认的linux分发版wsl --set-default <Distribution Name>
  • 注销或卸载linux分发版wsl --unregister <DistributionName>
  • 启动环境wsl ~
  • 从PowerShell或CMD运行特定的linux分发版wsl --distribution <Distribution Name> --user <User Name>
  • 返回通过 WSL 2 安装的 Linux 分发版的 IP 地址wsl hostname -I
  • 装载磁盘wsl --mount <DiskPath>
  • 卸载磁盘wsl --unmount <DiskPath>
C:\Users\Administrator>wsl -l-v NAME STATE VERSION * docker-desktop Running 2 C:\Users\Administrator>wsl --version WSL 版本: 2.6.2.0 内核版本: 6.6.87.2-1 WSLg 版本: 1.0.71 MSRDC 版本: 1.2.6353 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.26100.1-240331-1435.ge-release Windows: 10.0.19045.6332 C:\Users\Administrator>wsl --status 默认分发: docker-desktop 默认版本: 2 C:\Users\Administrator>wsl --list--online 以下是可安装的有效分发的列表。 使用“wsl.exe --install<Distro>”安装。 NAME FRIENDLY NAME Ubuntu Ubuntu Ubuntu-24.04 Ubuntu 24.04 LTS openSUSE-Tumbleweed openSUSE Tumbleweed openSUSE-Leap-16.0 openSUSE Leap 16.0 SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7 SUSE-Linux-Enterprise-16.0 SUSE Linux Enterprise 16.0 kali-linux Kali Linux Rolling Debian Debian GNU/Linux AlmaLinux-8 AlmaLinux OS 8 AlmaLinux-9 AlmaLinux OS 9 AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10 AlmaLinux-10 AlmaLinux OS 10 archlinux Arch Linux FedoraLinux-43 Fedora Linux 43 FedoraLinux-42 Fedora Linux 42 Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_10 Oracle Linux 8.10 OracleLinux_9_5 Oracle Linux 9.5 openSUSE-Leap-15.6 openSUSE Leap 15.6 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 

4、通过Docker Desktop运行容器

Win+R唤起运行弹窗,输入powershell回车打开命令行窗口

输入命令docker run -d -p 8080:80 docker/welcome-to-docker拉去镜像到本地并通过容器运行。

此处因8080端口占用,所以改为8090端口,拉去镜像后,运行容器。访问localhost:8090如下图所示,说明容器运行成功。

PS C:\Users\Administrator>docker run -d-p8080:80 docker/welcome-to-docker Unable to find image 'docker/welcome-to-docker:latest' locally latest: Pulling from docker/welcome-to-docker 9745203f5d34: Pull complete fd372c3c84a2: Pull complete 828fa206d77b: Pull complete bdaad27fd04a: Pull complete 958a74d6a238: Pull complete c1d2dc189e38: Pull complete 9824c27679d3: Pull complete a5585638209e: Pull complete 1babe895ddff: Download complete Digest: sha256:c4d56c24da4f009ecf8352146b43497fe78953edb4c679b841732beb97e588b0 Status: Downloaded newer image for docker/welcome-to-docker:latest f0aa6e50dd81fe27381040340314a0cd8f3d6a2d43e0d90f5bceb4648fddf10e PS C:\Users\Administrator>docker run -d-p8080:80 docker/welcome-to-docker c7bb3cde31567fc15744c3874b41a0ccf27331de3cad164995023ebb6a9b4d12 docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint youthful_darwin (c984ddce22434a6e2092167d0d71ccb60182ca9dcccefb6138792d1298f92b51): Bind for0.0.0.0:8080 failed: port is already allocated Run 'docker run --help'formore information PS C:\Users\Administrator>docker run -d-p8090:80 docker/welcome-to-docker 7783de463a74800d8cb7479b18926179573b288855a4bdb736ce24ceccaf672b PS C:\Users\Administrator>
在这里插入图片描述

查看镜像和容器

  • 查看镜像docker image list
  • 查看容器docker container list

ps:我说8080端口怎么占用了,上面没仔细看,我同一个镜像分别用8080、8090端口启动了2个容器,呜呜呜

PS C:\Users\Administrator>docker image list i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA docker/welcome-to-docker:latest c4d56c24da4f 22.2MB 6.03MB U mcp/playwright@sha256:53da89d1da3dfbb61c10f707c1713cfee1f870f7fba5334e126c6c765e37db56 53da89d1da3d 1.4GB 397MB PS C:\Users\Administrator>docker container list CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7783de463a74 docker/welcome-to-docker "/docker-entrypoint.…"7 minutes ago Up 7 minutes 0.0.0.0:8090->80/tcp, [::]:8090->80/tcp focused_nash f0aa6e50dd81 docker/welcome-to-docker "/docker-entrypoint.…"8 minutes ago Up 8 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp vibrant_elion PS C:\Users\Administrator>

5、通过Docker Desktop管理镜像

Docker Desktop 通过简化不同环境中应用程序的设置、配置和兼容性,简化了容器管理。
支持交互页面往往比仅支持命令窗口交互更友好,对于前期学习者来说。

5.1 镜像管理

可以通过页面直接管理镜像、容器、存储卷,调整K8s、大模型、Mcp等配置。

打开Docker Desktop主页面,点击Images发现docker/welcome-to-docker镜像在本地为运行状态。

有2个容器是运行状态,对应上面创建的8080和8090端口的服务。

在这里插入图片描述


在这里插入图片描述

5.2 容器管理

  • 点击容器,可以查看容器运行logs日志
  • 点击Exec,可以进入容器shell
  • 点击Inspect,可以获取有关容器的详细信息。

可以执行各种操作,例如暂停、恢复、启动或停止容器,或者浏览日志、绑定挂载、Exec、文件和统计信息选项卡。

在这里插入图片描述

5.3 支持AI Models和MCP生态

很久没有使用Docker Desktop,本次重新使用,发现已经把AI Models和MCP生态接入进来了,期待接下来的体验。

在这里插入图片描述
Powered By niaonao
WSL文档 https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers
Docker Desktop简介 https://docs.docker.top/get-started/introduction/get-docker-desktop/index.htm

Read more

【C++ STL栈和队列下】deque(双端队列) 优先级队列的模拟实现与仿函数的介绍

【C++ STL栈和队列下】deque(双端队列) 优先级队列的模拟实现与仿函数的介绍

🔥个人主页:爱和冰阔乐 📚专栏传送门:《数据结构与算法》 、C++ 🐶学习方向:C++方向学习爱好者 ⭐人生格言:得知坦然 ,失之淡然 博主简介 文章目录 * 前言 * 一、deque(双端队列) * 1.1 list和vector的优缺点 * 1.2 deque的原理介绍 * 1.3 deque和vector的性能对比 * 二、优先级队列 * 2.1 定义及其作用 * 2.2 模拟实现优先级队列 * 2.3 仿函数 * 三、总结 前言 本文聚焦STL双端队列(deque)与优先级队列的底层实现,深度剖析deque如何融合vector与list的优势,通过中控数组与分段缓存实现高效头尾操作;结合优先级队列的堆结构,详解仿函数在自定义排序规则中的核心作用。通过模拟实现代码与性能对比,让大家容器适配器,,希望读完本文可以让大家对栈和队列有更深刻理解

By Ne0inhk
C++ ODB ORM 完全指南:从入门到实战应用

C++ ODB ORM 完全指南:从入门到实战应用

文章目录 * ODB基本概念 * ODB框架安装 * 常见操作 * ODB类与接口 * 测试示例 ODB基本概念 ODB 是一个针对 C++ 的对象关系映射(ORM)库,它允许开发者以面向对象的方式操作数据库,将C++ 对象与数据库表进行映射,从而避免直接编写 SQL 语句,简化数据库操作。 特点: * 对象 - 关系映射:将 C++ 类映射到数据库表,类的成员变量映射到表的字段,对象的创建、修改、删除等操作会自动转换为对应的数据库操作(如 INSERT、UPDATE、DELETE)。 * 代码生成机制:ODB 不依赖运行时反射(C++ 本身不支持),而是通过编译期代码生成实现映射:开发者使用特殊的注解(如 #pragma db object)标记需要持久化的类,然后通过 ODB 编译器生成与数据库交互的代码(

By Ne0inhk
深入解析 STL 优先级队列:从原理到实战

深入解析 STL 优先级队列:从原理到实战

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 一、priority_queue 核心逻辑   1、本质与优先级规则   2、底层容器的适配要求   3、常用接口与场景示例 二、priority_queue 底层实现解析   1、默认 “大堆” 规则排序模拟实现   2、仿函数     2.1 仿函数的结构     2.2 仿函数测试代码     2.3 利用仿函数进行 priority_queue 底层实现     2.4 测试代码演示 三、

By Ne0inhk