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

大家好,我是比特桃。平时开发中,不免会使用一些容器来跑中间件。而开发者使用的操作系统,大多是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.mzph.cn/news/10302.shtml

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

相关文章

基于规则指导的知识图谱推理协作代理学习(2019)7.27

基于规则指导的知识图谱推理协作代理学习 摘要介绍问题和准备工作问题公式基于符号的方法基于游走的方法 RuleGuider模型架构实体代理策略网络 模型学习奖励设计训练过程 实验实验设置数据集实验结果消融研究人工评估 总结 摘要 基于 行走模型 是通过在提供可解释决策的同时实…

flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

当你在Flutter应用中尝试打开一个非安全连接的网页(例如HTTP连接而不是HTTPS连接)时,可能会遇到"ERR_CLEARTEXT_NOT_PERMITTED"错误。这是因为默认情况下,Android 9及更高版本禁止应用程序通过非安全的明文HTTP连接进行…

Linux学习笔记--如何在ubuntu中启用root用户和安装软件的方法(解决安装依赖)

一、ubuntu启用root用户 打开Terminal(终端),右键点击桌面,选择终端,弹出终端窗口。(使用快捷键ctrlaltt,也可以调出Terminal)。 指令su,该指令可切换用户或者切换到超级管理员root。 su 在终端…

STL中的常用算法详解

1. STL常用算法 STL的算法主要是由下面的头文件组成的。 <algorithm> <functional> <numeric>1.algorithm是所有STL头文件中最大的一个范围涉及到比较、交换、查找、遍历操作、复制、修改等等算法的头文件。 2.numeric体积很小&#xff0c;只包括几个再序…

爬虫获取渲染后页面(JAVA)

一、背景 最近突然想了解一下爬虫&#xff0c;但是自己又不太了解python&#xff0c;所以学习了下Java版爬虫。在这个过程中遇到了一个问题&#xff0c;为了解决这个问题&#xff0c;百度了很多方法&#xff0c;两个小时候&#xff0c;终于找到了一个最佳方案 二、问题描述 第…

python与深度学习(八):CNN和fashion_mnist二

目录 1. 说明2. fashion_mnist的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测…

day43-Feedback Ui Design(反馈ui设计)

50 天学习 50 个项目 - HTMLCSS and JavaScript day43-Feedback Ui Design&#xff08;反馈ui设计&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

opencv-26 图像几何变换04- 重映射-函数 cv2.remap()

什么是重映射&#xff1f; 重映射&#xff08;Remapping&#xff09;是图像处理中的一种操作&#xff0c;用于将图像中的像素从一个位置映射到另一个位置。重映射可以实现图像的平移、旋转、缩放和透视变换等效果。它是一种基于像素级的图像变换技术&#xff0c;可以通过定义映…

P1012 [NOIP1998 提高组] 拼数

题目描述 设有 &#xfffd;n 个正整数 &#xfffd;1…&#xfffd;&#xfffd;a1​…an​&#xff0c;将它们联接成一排&#xff0c;相邻数字首尾相接&#xff0c;组成一个最大的整数。 输入格式 第一行有一个整数&#xff0c;表示数字个数 &#xfffd;n。 第二行有 &a…

【正规方程对波士顿房价数据集进行预测】

数据准备 我们首先需要加载波士顿房价数据集。该数据集包含房屋特征信息和对应的房价标签。 import pandas as pd import numpy as npdata_url "http://lib.stat.cmu.edu/datasets/boston" raw_df pd.read_csv(data_url, sep"\s", skiprows22, headerN…

安全DNS,状态码,编码笔记整理

一 DNS DNS&#xff08;Domain Name System&#xff09;是互联网中用于将域名转换为IP地址的系统。 DNS的主要功能包括以下几个方面&#xff1a; 域名解析&#xff1a;DNS最主要的功能是将用户输入的域名解析为对应的IP地址。当用户在浏览器中输入一个域名时&#xff0c;操作…

github token使用方法

git remote set-url origin https://<githubtoken>github.com/<username>/<repositoryname>.git 在私有仓库的HTTPS的url上加入<githubtoken>即为token url&#xff0c;可以免ssh key登录

NoSQL之redis配置与优化

NoSQL之redis配置与优化 高可用持久化功能Redis提供两种方式进行持久化1.触发条件手动触发自动触发 执行流程优缺点缺点&#xff1a;优势AOF出发规则&#xff1a; AOF流程AOF缺陷和优点 NoSQL之redis配置与优化 mysql优化 1线程池优化 2硬件优化 3索引优化 4慢查询优化 5内…

iptables与防火墙

目录 防火墙 安全技术 划分方式 iptables 构成 四表 优先级 五链 iptables的规则 匹配顺序 iptables的命令格式 管理选项 匹配条件 控制类型 隐藏扩展模块 注意事项 防火墙 隔离功能&#xff0c;一般部署在网络边缘或者主机边缘&#xff0c;在工作中防火墙的…

Java 悲观锁 乐观锁

锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式 一、悲观锁、乐观锁定义 悲观锁就是我们常说到的锁。对于悲观锁来说&#xff0c;他总是认为每次访问共享资源时会发生冲突&#xff0c;所以必须每次数据操作加上锁&#xff0c;以保证临界区的程序同一时间只能有一个…

从零学算法560

560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3], k 3 输出&…

SQLite Studio 连接 SQLite数据库

1、在SQLite中创建数据库和表 1.1、按WINR&#xff0c;打开控制台&#xff0c;然后把指引到我们的SQLite的安装路径&#xff0c;输入D:&#xff0c;切换到D盘&#xff0c;cd 地址&#xff0c;切换到具体文件夹&#xff0c;输入“sqlite3”&#xff0c;启动服务 1.2、创建数据库…

多租户分缓存处理

多租户redis缓存分租户处理 那么数据库方面已经做到了拦截&#xff0c;但是缓存还是没有分租户&#xff0c;还是通通一个文件夹里&#xff0c; 想实现上图效果&#xff0c;global文件夹里存的是公共缓存。 首先&#xff0c;那么就要规定一个俗称&#xff0c;缓存名字带有globa…

数据库应用:MySQL MHA高可用集群

目录 一、理论 1.MHA 2.MySQL MHA部署准备 3.MySQL MHA部署 二、实验 1.MHA部署 三、问题 1.中英文符兼容报错 2.MHA测试 ssh 无密码认证语法报错 3.MHA测试 ssh 无密码认证log-bin报错 4.MHA测试 mysql 主从连接情况报错slave replication 5.MHA测试 mysql 主从连…

Elasticsearch监控工具Cerebro安装

Elasticsearch监控工具Cerebro安装 1、在windwos下的安装 1.1 下载安装包 https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.zip 1.2 解压 1.3 修改配置文件 如果需要修改相关信息&#xff0c;编辑C:\zsxsoftware\cerebro-0.9.4\conf\applica…