window安装Docker Desktop for Windows(基于WSL2)

news2024/11/19 6:38:20

目录

  • 一 什么是Ducker
  • 二 安装Ducker
  • 1 window for Linux子系统环境搭建
      • 1.1 打开系统虚拟机平台和WSL(适用于Linux的window子系统)
      • 1.2安装WSL2
      • 1.3为什么用wsl2,不用wsl1
      • 1.4 下载集成支持linux内核的wsl2
      • 1.5 设置WSL默认版本
  • 二、安装Ubuntu20.04LTS
    • 1 打开Microsoft Store安装Ubuntu ---Linux发行版
    • 2 常见问题解决
  • 三 安装Ducker for window
    • 更改镜像源
    • 更改数据存储位置
    • Windows中更改Docker默认安装路径方法
  • 四 Ducker 简单使用

请添加图片描述

一 什么是Ducker

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。

二 安装Ducker

1 window for Linux子系统环境搭建

1.1 打开系统虚拟机平台和WSL(适用于Linux的window子系统)

控制面板->程序->启用或关闭Windows功能->向下滑 勾选以下两项功能。请添加图片描述

在安装完成后系统会提示你重启计算机

开启以上功能后查看windows相关配置
打开任务管理器(CTRL+ALT+DELETE)-> 选择性能 -> CPU ->虚拟化,确认是否已启用

在这里插入图片描述

1.2安装WSL2

WSL,即Windows Subsystem on Linux,中文叫“适用于 Linux 的 Windows 子系统”。可以在windows里,直接启动一个linux系统。因为docker依赖linux内核,只能在linux下使用,windows就需要安装linux虚拟机来运行,而微软已经在win10内置了一个轻量级虚拟机,WSL2 便是运行在虚拟机上的一个完整的 linux 内核,所以需要利用WSL2安装docker。

微软要求 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11

设置->更新和安全->操作系统内部版本信息查询操作系统版本信息

1.3为什么用wsl2,不用wsl1

关于wsl2和wsl1的区别

1.4 下载集成支持linux内核的wsl2

网址: https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel
点击下载最新的更新包,下好后双击运行安装即可。这时你的wsl就为wsl2了

1.5 设置WSL默认版本

打开cmd输入以下命令,指定wsl版本

wsl --set-default-version 2

二、安装Ubuntu20.04LTS

1 打开Microsoft Store安装Ubuntu —Linux发行版

在这里插入图片描述
找到Ubuntu 20.04LTS点击安装即可,直接点击启动就行
在这里插入图片描述
.打开后设置初始的用户名和密码即可,如果出现参考的对象类型不支持尝试的操作,请重置下网络net winsock reset
在这里插入图片描述
以后我们就可以直接在端口打开ubuntu使用Linux命令了
在这里插入图片描述
然后打开cmd窗口输入命令查看本机的Linux的发行版了

wsl -l -v
wsl -l -v 

Name   				STATE  			VERSION
Ubuntu-20.04        Running            2

2 常见问题解决

2.1 安装失败并出现错误 0x80070003
适用于 Linux 的 Windows 子系统只能在系统驱动器(通常是 C: 驱动器)中运行。 请确保分发版存储在系统驱动器上:打开“设置”->“系统”–>“存储”-> “更多存储设置”: 更改新内容的保存位置”

2.2 WslRegisterDistribution 失败并出现错误 0x8007019e
未启用“适用于 Linux 的 Windows 子系统”可选组件:

打开“控制面板” -> “程序和功能” -> “打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用本文开头所述的 PowerShell cmdlet。

2.3 安装失败,出现错误 0x80070003 或错误 0x80370102
请确保在计算机的 BIOS 内已启用虚拟化。 有关如何执行此操作的说明因计算机而异,并且很可能在 CPU 相关选项下。WSL2 要求 CPU 支持二级地址转换 (SLAT) 功能,后者已在 Intel Nehalem 处理器(Intel Core 第一代)和 AMD Opteron 中引入。 即使成功安装了虚拟机平台,旧版 CPU(例如 Intel Core 2 Duo)也无法运行 WSL2。

2.4 尝试升级时出错:Invalid command line option: wsl --set-version Ubuntu 2
请确保已启用适用于 Linux 的 Windows 子系统,并且你使用的是 Windows 内部版本 18362 或更高版本。 若要启用 WSL,请在 PowerShell 提示符下以具有管理员权限的身份运行此命令:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux。

2.5 由于虚拟磁盘系统的某个限制,无法完成所请求的操作。虚拟硬盘文件必须是解压缩的且未加密的,并且不能是稀疏的
取消选中“压缩内容”(如果已选中“加密内容”,请一并取消选中),方法是打开 Linux 发行版的配置文件文件夹。 它应位于 Windows 文件系统上的一个文件夹中,类似于:USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited…
在此 Linux 发行版配置文件中,应存在一个 LocalState 文件夹。 右键单击此文件夹可显示选项的菜单。 选择“属性”>“高级”,然后确保未选择(未勾选)“压缩内容以节省磁盘空间”和“加密内容以保护数据”复选框。 如果系统询问是要将此应用到当前文件夹还是应用到所有子文件夹和文件,请选择“仅此文件夹”,因为你只是要清除压缩标志。 完成此操作后,wsl --set-version 命令应正常工作。
2.6 无法将词语“wsl”识别为 cmdlet、函数、脚本文件或可运行程序的名称
请确保已安装“适用于 Linux 的 Windows 子系统”可选组件。 此外,如果你使用的是 ARM64 设备,并从 PowerShell 运行此命令,则会收到此错误。 请改为从 PowerShell Core 或从命令提示符运行 wsl.exe。

2.7 错误:此更新仅适用于装有适用于 Linux 的 Windows 子系统的计算机
若要安装 Linux 内核更新 MSI 包,需要 WSL,应先启用它。 如果失败,将看到以下消息:This update only applies to machines with the Windows Subsystem for Linux。
出现此消息有三个可能的原因:
你仍使用旧版 Windows,不支持 WSL 2。 有关版本要求和要更新的链接,请参阅步骤 #2。
未启用 WSL。 需要返回到步骤 #1,并确保在计算机上启用了可选的 WSL 功能。
启用 WSL 后,需要重新启动才能使其生效,请重新启动计算机,然后重试。
2.8 错误:WSL 2 要求对其内核组件进行更新
如果 %SystemRoot%\system32\lxss\tools 文件夹中缺少 Linux 内核包,会遇到此错误。 若要解决此问题,请在安装说明的步骤 #4 中安装 Linux 内核更新 MSI 包。 可能会需要从添加或删除程序卸载 MSI,然后重新安装。

三 安装Ducker for window

安装Ducker之前建议先看下文章底部-------Windows中更改Docker默认安装路径方法(C盘够用可以直接忽略)
在这里插入图片描述

ducker官网访问较慢,这是中文官网:https://docker.p2hp.com/
下好后直接双击运行安装即可设置里勾选基于wsl2的引擎(我的默认勾选了)
在这里插入图片描述

安装docker后,docker会自动创建2个发行版:

docker-desktop docker-desktop-data

用PowerShell运行 wsl -l -v会发现已经创建了两个docker发行版了(这边我把docker已经停了,所以显示Stopper)
在这里插入图片描述

更改镜像源

在国内从官方的DockerHub拉取镜像经常会比较感人,所以我们需要利用国内的镜像源或者加速器

科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/

打开设置,修改镜像源
在这里插入图片描述

{
  "registry-mirrors": [
    "https://1nj0zren.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [],
  "debug": true,
  "experimental": false
}

更改数据存储位置

Windows下的docker默认安装在C盘,所以为了拯救我们可怜的C盘,就需要把数据存储到其他盘

1 打开cmd 关闭所有发行版
wsl --shutdown
打开cmd窗口。查看停止情况:
wsl --list -v

在这里插入图片描述

2.备份数据到另一个文件夹 PowerShell运行
要导出的文件夹可以提前建好
wsl --export docker-desktop-data E:\DockerData\docker-desktop-data.tar

在这里插入图片描述

3.删除原有数据

wsl --unregister docker-desktop-data

4.更改数据存储盘并恢复数据

wsl --import docker-desktop-data E:\DockerData E:\DockerData\docker-desktop-data.tar --version 2
		#		镜像名			 要导入的路径		存放镜像的路径						wsl2

即将备份数据导入到新的虚拟盘,且指定虚拟盘的存放路径为E:\DockerData,导入完成后在该目录下会存在一个ext4.vhdx的虚拟磁盘路径

然后启动docker就可以啦

Windows中更改Docker默认安装路径方法

一个docker 起码占用2G,跑起来5G多,安装C盘真来不了。。。
安装流程没有显示安装地址修改路径的,只能用这样软连接的方法了!!!~~~~

1、先创建 D:\Program Files\Docker 目录。
注意:如果C盘Program Files 如果有Docker,需要先删除

2、用管理员身份打开 cmd 窗口,然后,再运行如下命令:
mklink /j “C:\Program Files\Docker” “D:\Program Files\Docker”
运行结果:
在这里插入图片描述

为 C:\Program Files\Docker <<===>> D:\Program Files\Docker 创建的联接
3、现在去安装docker就可以了,docker默认安装路径已经更改成功了。

四 Ducker 简单使用

1 查看docker是否安装成功

docker -v   
# 查看docker版本号

2.docker 安装 redis

(1)拉取redis镜像

docker pull redis

(2)查看本地镜像

docker images

在这里插入图片描述

(3)运行容器

把子系统中的redis的端口6379映射到主机(本机)端口的6379 这样我们就能在本机访问到子系统中的redis了()
docker run -d --name myredis -p 6379:6379 redis
myredis:自定义的容器名 6379:6379 端口映射 redis 镜像名

(4)安装成功 查看容器的运行信息

docker ps

在这里插入图片描述

(5)连接测试进入redis终端

docker exec :在运行的容器中执行命令
# 语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

redis-cli表示运行一个redis客户端。
docker exec -it myredis redis-cli

在这里插入图片描述
然后我们就可以在本机上访问redis客户端了。

(6)退出

exit

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

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

相关文章

解析某音短视频X-Bogus

文章目录写在前面目标正向梳理主要加密函数主要算法解析逆向梳理结论测试进阶写在后面写在前面 首先推荐一篇资料&#xff1a; 某音短视频 X-Bogus 逆向分析&#xff0c;JSVMP 纯算法还原 这篇文章介绍了通过插桩日志抠算法的过程&#xff0c;很有参考价值。 文章已经实现的部…

什么是外汇跟单?外汇MT4自动跟单系统靠谱吗?

对于很多刚刚进入外汇市场的新手投资者而言&#xff0c;必须踏踏实实学习基础知识和交易技巧&#xff0c;才能在外汇市场获取盈利&#xff0c;因为在没有任何专业知识的情况下&#xff0c;想要在外汇市场盈利是一件非常艰难的事情。而一些脑洞大开的外汇新手投资者却在思考&…

第7章 分页之模型分页(物理分页)

模型分页主要通过前端页面中的分页控件&#xff0c;向后端指定路由(控制器行为方法)&#xff0c;传递相等的参数&#xff0c;然后间接的通过后端程序从数据库指定表中获取一些指定行的数据&#xff0c;然后把这些数据在前端页面渲染显示出来。模型分页的主要用于前端页面与后端…

Java开发 - 数据库索引的数据结构

目录 前言 题外话 什么是索引 索引的使用场景 索引的失效瞬间 索引的数据结构 Tree BTree BTree 索引提高查询效率的原因 索引的分类 innodb的特点 聚簇索引 非聚簇索引 索引操作 创建索引 查询索引 删除索引 外键 结语 前言 上一章中讲解了慢sql优化的方…

快速诊断I/O性能问题

背景客户反馈最近一段时间数据库运行缓慢&#xff0c;磁盘的压力很大&#xff0c;现在有两种不同的分析结论&#xff0c;存储设备性能下降和数据库压力变大&#xff0c;请我们进行系统的分析&#xff0c;给一个结论 现象 登录SQL专家云&#xff0c;进入性能指标页面&#xff0c…

跨境电商小白:一件代发是什么?为什么要选择Starday一件代发?

近两年经济形势比较复杂多变&#xff0c;许多人面临就业难、职场改革、行业转型等困境&#xff0c;而跨境电商行业在此形势下依靠着国家优惠政策以及中国高质量产品在海外市场获得越来越多的份额。随着跨境电商行业发展规模的扩大&#xff0c;越来越多人选择加入到跨境电商赛道…

【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口

文章目录一 省份交易额统计接口1 Sugar配置&#xff08;1&#xff09;图表配置&#xff08;2&#xff09;接口地址&#xff08;3&#xff09;数据格式&#xff08;4&#xff09;执行SQL2 数据接口实现&#xff08;1&#xff09;创建地区交易额统计实体类ProvinceStats&#xff…

Kafka基础_2

Kafka系列 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark Flink Kafka Hbase …

18-RocketMQ源码解读

NameServer启动 1、功能回顾 NameServer的核心作用 一是维护Broker的服务地址并进行及时的更新。 二是给Producer和Consumer提供服务获取Broker列表。 2、启动流程-源码重点 整个NameServer的核心就是一个NamesrvController对象。这个controller对象就跟java Web开发中的Contr…

3D可视化大屏是如何实现的?

3D可视化是指拥有3D效果的数据可视化&#xff0c;对于所要展示的数据可视化内容还原出真实场景&#xff0c;并实时接入数据&#xff0c;在面对复杂操作时灵活应对&#xff0c;使得整个场景在大屏上的展示更具立体、更具科技感、更具易用性。 物联网时代&#xff0c;可视化大屏的…

【发表案例】传感器网络及电路类,仅1个月26天录用

【期刊简介】IF&#xff1a;1.0-2.0&#xff0c;JCR4区&#xff0c;中科院4区 【检索情况】SCI 在检&#xff0c;正刊 【征稿领域】自主传感器网络的高级接口电路及其应用 【参考周期】2个月左右录用 【截稿日期】2023.1.31 重要时间节点&#xff1a;仅1个月26天录用 2022/12…

神经网络中常用的权重初始化方法及为何不能全初始化为0

1.权重初始化的重要性 神经网络的训练过程中的参数学习时基于梯度下降算法进行优化的。梯度下降法需要在开始训练时给每个参数赋予一个初始值。这个初始值的选取十分重要。在神经网络的训练中如果将权重全部初始化为0&#xff0c;则第一遍前向传播过程中&#xff0c;所有隐藏层…

深度学习笔记:感知机

感知机&#xff08;perceptron&#xff09;为神经网络的起源算法。感知机接受多个输入信号&#xff0c;输出一个信号。感知机信号只有0和1。 在上图的感知机中&#xff0c;x1和x2两个输入信号会分别乘以其对应权重(weight) w1和w2&#xff0c;传入神经元。神经元计算传来信号综…

Disentangled Face Attribute Editing via Instance-Aware Latent Space Search翻译

论文地址 代码地址 摘要 最近的研究表明&#xff0c;生成对抗网络&#xff08;GAN&#xff09;的潜空间中存在一组丰富的语义方向&#xff0c;这使得各种面部属性编辑应用成为可能。然而&#xff0c;现有的方法可能会遇到属性变化不好的问题&#xff0c;从而导致在更改所需属…

JS中数组对象使用

文章目录一、创建数组对象二、数组翻转1.检测数组2.翻转数组&#xff1a;三、添加数组元素1.push方法2.unshift方法四、删除数组元素1.pop方法2.shift方法&#x1f918;案例1五、数组排序六、数组索引方法1.indexof(数组元素)2.lastIndexOf方法&#x1f91f;案例2七、数组转化为…

数字验证学习笔记——SystemVerilog芯片验证16 ——约束控制块随机函数

一、约束块控制 一个类可以包含多个约束块。可以把不同约束块用于不同测试。一般情况下&#xff0c;各个约束块之间的约束内容是互相协调不违背的&#xff0c;因此通过随机函数产生随机数时可以找到合适的解 如果子类继承父类&#xff0c;也继承了父类的约束&#xff0c;这个时…

基于蒙特卡诺的电动汽车充电负荷曲线研究(充电开始时间,充电电量,充电功率)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C++】 STL-vector模拟实现

文章目录vector源码的内容:成员变量默认构造函数构造函数1-无参构造构造函数2 -使用n个相同的值构造构造函数3-使用迭代器区间构造拷贝构造函数**传统写法**现代写法赋值重载函数opeartor传统写法现代写法析构函数迭代器begin & end任意类型vector容器迭代器通用遍历方式:容…

paddleOCRv3之四: rec识别部分用 tensorRT(C++)部署

文章目录1. 简介&#xff1a;速度测试2. paddle 模型转onnx3. onnx转为tensorRT的engine模型4. tensorRT在vs2017中的配置5. 源码1. 简介&#xff1a; tensorRT是nvdia GPU模型部署的一个框架&#xff0c;似乎只是部分开源&#xff0c;github地址.大多数时候用这个框架去部署模…

十九、Docker容器监控之CAdvisor+InfluxDB+Granfana

1、概述 Docker自带查询容器状态的命令&#xff1a;docker stats&#xff0c;可以看到容器的ID\名称、占用CPU、内存等信息 但是我们不能时时刻刻的盯着这个命令&#xff0c;并且这个都是实时数据不能留痕&#xff0c;如果这个时候某一个容器挂了&#xff0c;我们想查看下当时…