在 Windows 中通过 WSL 2 高效使用 Docker

news2024/11/24 14:44:50

大家好,我是比特桃。平时开发中,不免会使用一些容器来跑中间件。而开发者使用的操作系统,大多是Mac OS 、Windows。Docker 为了兼顾这两个平台的用户,推出了 Docker Desktop 应用。Docker Desktop 中的内核还是采用了 Linux 的内核进行的,这并没有发生变化,它会依托于操作系统中的 Linux 虚拟内核开展。安装配置成功后,其 Docker 使用也和 Linux 下几乎一模一样(路径转义符略有区别)。Mac OS 的版本直接进行拖拽安装即可,比较便捷。但 Windows 中需要手动配置Windows中自带的 Linux 子系统,本文特此记录说明。
其实写这篇文章的主要原因是:我发现有不少人在 Windows 下通过安装Linux虚拟机来使用Docker,这个效率非常低,不太推荐。因为 Windows 为我们提供了和原生系统结合的更完美的 WSL,然后再通过 Docker Desktop 应用的结合,可以达到更好的效果。

1. 环境准备

打开 Windows 中的虚拟机环境,有两种方式。分别是界面版、命令版,你可以任选一种进行:

1.1 界面配置

打开控制面板→程序和功能

启用或关闭 Windows 功能

在这里插入图片描述
开启 适用于Linux 的 Windows 子系统、虚拟机平台(如有 Hyper-V 选项也可以一并启用)
在这里插入图片描述

1.2 命令配置

命令版(与上面UI操作意思相同)

# 启用 Windows 子系统 Linux 版
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2. WSL配置

WSL 是微软在Windows操作系统中,提供给开发人员在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。Windows Subsystem for Linux (WSL) 允许开发人员安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等)并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,无需修改,无需任何修改。传统虚拟机或双引导设置的开销。

2.1 配置WSL

# 设置 WSL 默认版本为 2
wsl --set-default-version 2

在这里插入图片描述

2.2 升级WSL

# 升级并检查相关缺少内容
wsl --update

通过wsl --update 命令,WSL 将进行升级并检查相关缺少内容
在这里插入图片描述
如果无法连接外网,离线手动安装WSL核心包:https://learn.microsoft.com/en-us/windows/wsl/install-manual

2.3 安装子系统

# 列出 Linux 分发版本,并进行安装
wsl --list --online
wsl --install

在这里插入图片描述
只安装配置内核包即可使用 Docker Desktop,但如果条件允许的情况下,最好还是装一个完整的 Linux 分发版本的子系统

安装分发系统也可通过 Microsoft Store 搜索下载安装:
在这里插入图片描述

2.4 使用子系统

安装好后通过适用于Linux的Windows子系统 或者 Ubuntu ***应用即可使用 Linux 子系统:
在这里插入图片描述
可以看到,使用方面是和Linux 终端并没有区别。即便我们不用 Docker ,在其他需要使用 Linux 的场景下,都可以进行使用 WSL:
在这里插入图片描述

3. 安装Docker

一切准备齐全,官网下载安装包:https://www.docker.com/products/docker-desktop/
下载安装可无脑下一步,就不介绍了。打开后主要配置一下这里将我们上面配置好的 WSL 与 Docker相结合:
在这里插入图片描述
大功告成!我们可以看到,在Windows终端中,可以完美使用 Docker 的命令:
在这里插入图片描述
在我们的 WSL 中的 Ubuntu 20.0.4 中,也可以直接使用 Docker ,他们紧密的结合在了一起。
在这里插入图片描述

4. 结语

本文通过微软为我们提供更高效的 WSL ,安装 Windows下的子系统。从而实现了 Docker 所依赖的 Linux 内核的需要,通过 Docker Desktop 软件,配置集成了我们 WSL 中的 Linux 子系统。在 Windows 中一体化的使用,也节省了大量的使用虚拟机所产生的计算资源。
我已经很少用 VirtualBox 之类的虚拟机软件了,因为有 WSL 足以,祝大家使用顺利。

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

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

相关文章

swift简单弹幕例子,仿哔哩哔哩

先看例子 每个弹幕的速度都是不一样的,支持弹幕整体开始暂停。 如果弹幕实在是太多了,有个缓冲队列,不停的重试能否显示,保证文字都能显示全,并且每条都能显示。 实现是基于 CADisplayLink 实现的,如此来…

mac使用教程【快速从windows切换为mac,mac快捷键合集】

mac使用教程 1. 安装brew并通过brew安装git 1.1 安装brew 打开终端输入如下命令: % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"选择对应的镜像进行安装 # 例如:输入5&#xff…

了解 3DS MAX 3D摄像机跟踪设置:第 5部分

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建陨石坑 步骤 1 启动 3ds Max 和 打开本教程最后一部分中保存的文件。 启动 3ds Max 步骤 2 删除所有占位符 从头开始创建陨石坑。 删除所有占位符 步骤 3 创建具有“长度”的平面 段和宽度段各…

如何创建vue2,vue3项目

前提需安装node.js和Vue CLI node.js:https://nodejs.org/zh-cn Vue CLI: npm install -g vue/cli 如何创建一个vue2项目 (1) 使用cmd终端直接创建 进入到vue项目所创建的目录里(我是直接创建在桌面上) 选择vue2 …

【mysql】聚簇索引和非聚簇索引(B树和B+树)

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: mysql 目录 一、索引分类 二、索引的数据结构 2.1 B树:改造二叉树 2.2 B树:改造B树 三、Mysql索引实现—InnoDB引擎 3.1 主键索引(聚簇索引) 3.2 …

如何利用plotly和geopandas根据美国邮政编码(Zip-Code)绘制美国地图

对于我自己来说,该需求源自于分析Movielens-1m数据集的用户数据: UserID::Gender::Age::Occupation::Zip-code 1::F::1::10::48067 2::M::56::16::70072 3::M::25::15::55117 4::M::45::7::02460 5::M::25::20::55455 6::F::50::9::55117我希望根据Zip-…

Python读写csv文件

简介 通过Python内置csv模块,可以读取和写入CSV(逗号分隔值)文件。 CSV是一种常见的文件格式,通常用于存储表格数据,每行数据由逗号分隔,每个字段可以用引号括起来。 测试文件内容如下 列号,年龄,姓名,性别…

香橙派Zero2安装wiringPi外设库

安装wiringOP库 直接在香橙派上下载 wiringOP 的代码 sudo apt update sudo apt install -y git git clone https://github.com/orangepi-xunlong/wiringOP 如果在香橙派上下载不下来,也可以在通过windows浏览器打开https://github.com/orangepi-xunlong/wiringOP …

【【高级程序设计语言C++】C++多态的概念及原理

1. 多态的概念2. 多态的定义及实现2.1. 多态的条件2.2. 虚函数2.3. 虚函数的重写2.4. 虚函数重写的两个例外2.5. C11的override和final2.6. 重载、重写、重定义的对比 3. 抽象类3.1. 概念3.2. 实现继承和接口继承的对比 4. 多态的原理4.1. 虚函数表4.2. 多态原理4.3. 动态绑定和…

(34)继电器开关

文章目录 前言 34.1 装有IOMCU的自动驾驶仪上的继电器引脚 34.2 通过任务规划器定义继电器引脚 34.3 飞行员控制继电器 34.4 任务控制继电器 34.5 任务规划器控制继电器 前言 "继电器"是自动驾驶仪上的一个数字输出引脚,可在 0V 和 3.3V 或 5V 之间…

商城-学习整理-基础-分布式组件(三)

目录 一、前言二、Spring Cloud&Spring Cloud Alibaba1、Spring Cloud 与Spring Cloud Alibaba简介2、为什么使用Spring Cloud Alibaba3、版本选择4、项目中的依赖 三、Spring Cloud Alibaba-Nacos作为注册中心1、Nacos1)、下载 nacos-server2)、启动…

【C++ 程序设计】第 1~9 章:常见知识点汇总

目录 一、C 语言简介 二、面向对象的基本概念 三、类和对象进阶 四、运算符重载 五、类的继承与派生 六、多态与虚函数 七、输入/输出流 八、文件操作 九、函数模板与类模板 一、C 语言简介 知识点名称内容C语言的发展简史★★1. C 语言是 C 语言的前身 &…

让GPT人工智能变身常用工具-上

1.密码生成器:GPT为您创建安全密码 想象GPT作为您的个人密码生成器,负责从头到尾为您创建复杂且安全的密码。您只需要告诉他您的密码需求,比如密码的长度,是否包含大写字母、小写字母、数字或特殊字符,他会立即为您生成一个复杂但经过深度设计的密码。 例子: 我希望您…

第八届中国开源年会(COSCon'23)启动!

*海报设计师:朱亿钦(居居) 一年一度的开源盛会,COSCon23 第八届中国开源年会,将于10月28~29日,在四川成都市高新区菁蓉汇召开!本次大会的主题是:“开源:川流不息、山海相…

(css)滚动条样式

(css)滚动条样式 效果: /*滚动条整体样式*/ ::-webkit-scrollbar {width: 2px;/*高宽分别对应横竖滚动条的尺寸*/height: 10px; } ::-webkit-scrollbar-thumb {/*滚动条里面小方块*/border-radius: 10px;width: 2px;height: 60px;background: linear-gradient(0deg,…

leetcode 78. 子集

2023.7.22 本题为回溯系列的一道标准模板题。 如果将回溯问题抽象为一棵树的话,那么之前的组合、分割问题都是为了找到这棵树的叶子节点,而子集是要找到这棵树的所有节点。 然后要注意,子集是无序的,即{1,2}和{2&#…

幂等性设计与实现

文章目录 前言1.全局唯一ID1.1 前端防止重复提交1.2 token机制1.3 数据库表加唯一约束 2.幂等下 ABA问题 与乐观锁2.1 乐观锁2.2 如何解决ABA问题? 3.分布式锁和事务3.1 分布式锁:3.2. 分布式事务 前言 幂等性(Idempotence)是一个…

导航、开源镜像、Prompt ( AI 提示词 )、AI工具集、chatgpt镜像

1、导航 网站 众多网址导航中,哪个最好?理由是什么? :https://www.zhihu.com/question/19899559 除了百度,其他搜索引擎: 综合类搜索导航(Anywhere Anything):http://lackar.com/aa/ 渗透师 导…

开源QianWei搭建音乐网站,并实现公网连接

开源QianWei搭建音乐网站,并实现公网连接 1、前言2、本地网页搭建2.1环境使用2.2 支持组建选择2.3 网页安装 3、本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4、公网访问测试5、结语 1、前言 音乐是我们生活和工作中不可或缺的调剂,它能让我们心…

二,jmeter的简介还有一些参数的说明

文章目录 一、jmeter简介及安装1. 简介2. 安装 二、jmeter设置语言三、jmeter文件路径说明四、编写jmeter脚本五、乱码的处理:1. 请求内容出现乱码处理方法2. 响应内容出现乱码处理方法 一、jmeter简介及安装 1. 简介 Apache 托管的开源java工具接口测试、自动化测…