在 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 足以,祝大家使用顺利。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能合约安全审计

智能合约安全审计的意义 智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用…

基于OpenCV的红绿灯识别

基于OpenCV的红绿灯识别 技术背景 为了实现轻舟航天机器人实现红绿灯的识别,决定采用传统算法OpenCV视觉技术。 技术介绍 航天机器人的红绿灯识别主要基于传统计算机视觉技术,利用OpenCV算法对视频流进行处理,以获取红绿灯的状态信息。具…

Qt5.14.2下载及安装

1. 下载 https://download.qt.io/archive/qt/5.14/5.14.2/ 由于Qt 自从5.15版本开始,对非商业版本(也就是开源版本),不提供已经制作好的离线exe安装包。所以,对于5.15(含)之后的版本&#xff…

苹果账号被禁用怎么办

转载:苹果账号被禁用怎么办 目录 禁用的原因 解除Apple ID禁用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKQ1ILhC-1689932607373)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw)]​编辑 …

MySQL的主从复制练习

基本原理图如下: 主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。当主库进行更新的时候,会自动将数据复制到…

从C到C++ | C++入门(三)

目录 内联函数 auto 关键字 范围for 指针空值nullptr 内联函数 以inline修饰的函数叫内联函数&#xff0c;编译时C编译器会在调用函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;可提升程序的运行效率。 例子&#xff1a; #include <iostream> …

【C++修炼之路】内存管理

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、C/C 内存分布二、考题三、C语言动态内存管理方式四、C内存管理方式1、对内置类型2、对自定义类型 五、C对动态管理的升级六…

查找和二叉树(基础知识和基本操作)

查找&#xff1a; 1.二分查找&#xff1a;先定一个大范围&#xff0c;想一个数&#xff0c;看是在起始范围到中间范围还是中间范围到结束范围&#xff0c;依次循环直到确定值&#xff08;相当于一直把范围折半&#xff0c;直到找到&#xff09; while(low<high) {int mid(…

分布式光伏电站运维平台在石化行业的应用光伏发电数据实时监控

摘要&#xff1a;为实现绿色发展和“净零排放”的目标&#xff0c;近些年来国内外不少能源化工企业进入光伏发电领域。如何做好光伏电站的运行维护&#xff0c;成为石化企业不得不思考的重要课题。本文从分布式光伏电站消防安全、作业安全、环保管理等方面进行思考&#xff0c;…

为什么学习SpringSpring框架核心与设计思想(IOC与DI)?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 目录 文章目录 一、Spring是什么&#xff1f; 二、为什么要学习框架&#xff1f; 三、Spring核心概念 3.1 什么是容器&#xff1f; 3.2 什么是IOC&#xff1f; 四、再谈Spring中的 IOC 五…

mac如何提取视频中的音频?

mac如何提取视频中的音频&#xff1f;我们经常在平时工作的时候&#xff0c;需要将一个视频里面的音频单独提取出来另做他用&#xff0c;例如很多视频自媒体博主就经常使用这种方法来储备音频素材&#xff0c;这个操作在Windows上面比较容易实现&#xff0c;毕竟有相当多的软件…

计算机网络微课堂学习笔记(详细图解讲解)-长期更新

前言&#xff1a; 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施&#xff0c;计算机网络已经像水、电、煤气这些基础设施一样&#xff0c;成为我们生活中不可或缺的一部分 一、因特网概述 &#xff08;1&#xff09;网络、…

黑马 pink h5+css3+移动端前端

网页概念 网页是网站的一页,网页有很多元素组成,包括视频图片文字视频链接等等,以.htm和.html后缀结尾,俗称html文件 HTML 超文本标记语言,描述网页语言,不是编程语言,是标记语言,有标签组成 超文本指的是不光文本,还有图片视频等等标签 常用浏览器 firefox google safari…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

实际上手体验maven面对冲突Jar包的加载规则 | 京东云技术团队

一、问题背景 相信大家在日常的开发过程中都遇到过Jar包冲突的问题&#xff0c;emm&#xff0c;在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发&#xff0c;各种第三方包之间可能…

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过Linux的老铁&#xff0c;主要内容含 欢迎订阅 YY 滴Linux专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 订阅专栏阅读&#xff1a;YY的《…

跨网段耦合器的作用

你是否曾经遇到过需要跨网段访问设备的问题&#xff1f;比如在工业自动化领域&#xff0c;PLC和数控设备的连接。这时候&#xff0c;远创智控YC8000-NAT就能帮你轻松解决。 1, 远创智控YC8000-NAT是一款功能强大的设备&#xff0c;它可以将LAN1口所连接PLC的IP地址和端口号&a…

使用wxPython和pillow开发拼图小游戏(四)

上一篇介绍了使用本地图片来初始化游戏的方法&#xff0c;通过前边三篇&#xff0c;该小游戏的主要内容差不多介绍完了&#xff0c;最后这一篇来介绍下游戏用时的计算、重置游戏和关闭窗口事件处理 游戏用时的计算 对于游戏用时的记录&#xff0c;看过前几篇的小伙伴可能也发现…

结构型设计模式之代理模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

springBoot使用webSocket的几种方式以及在高并发出现的问题及解决

一、第一种方式-原生注解&#xff08;tomcat内嵌&#xff09; 1.1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>1.2、配置文件 package …