windows10 上安装 docker

windows 10 上安装 docker

官方目前给的方案是利用 Docker Desktop 来安装 docker 环境

一、安装前准备工作

1.1 检查系统要求

  • Windows 10 64 位:Home 或 Pro 2004(内部版本 19041)或更高版本,或者 Enterprise 或 Education 1909(内部版本 18363)或更高版本。
  • 在 Windows 上启用 WSL 2 (适用于 Linux 的 Windows 子系统)功能。
  • 要在 Windows 10 上成功运行 WSL 2,需要满足以下硬件先决条件:
  • 具有二级地址转换 (SLAT) 的64 位处理器(可下载微软官方Coreinfo工具检测)
  • 4GB 系统内存
  • 启用硬件虚拟化支持。
  • 下载并安装 Linux kernel 升级包

1.2 启用硬件虚拟化支持

右键开始打开【应用和功能(F)】-->程序和功能-->启用或关闭windows功能-->【适用于Linux的windows子系统】和【虚拟机平台】打勾。

点击确认后会提示重启电脑,重启过程可能需要占用较长的时间(15-30分钟),请耐心等待。

重启完成后,打开任务管理器-->性能,查看虚拟化是否已启用:

1.3 下载并安装Linux kernel升级包

参考资料:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package

在windows cmd中使用systeminfo查看系统类型,根据x64或者ARM64下载不同的内核更新包

开始安装:

二、下载安装Docker Desktop

完成安装前准备后,下载并安装Docker Desktop,可以从官方下载 https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe

下载完成后双击 Docker Desktop Installer,直接点击 OK 开始安装:

待安装完成之后,重启计算机

重启完成后,双击桌面Docker Desktop启动

三、在windows下使用docker

1.利用PowerShell

打开 PowerShell,启动一个镜像

docker run -d -p 80:80 docker/getting-started

查看镜像和容器

docker images
docker container ls -a

2.使用Docker Desktop上的图形化界面

还可以直接在Docker Desktop操作镜像:

查看运行的容器:

还可以设置镜像加速地址和本地镜像仓库:

四、docker镜像存储位置修改

WSL 2管理下的docker镜像会默认存放在C盘,长期可能会导致C盘空间不足,所以最好进行文件的迁移

1.了解 WSL 子系统

WSL 是 windows subsystem for linux 的简写,指的是 windows10 的一个子系统,这个子系统的作用是在 windows下运行 linux 操作系统。现在有两个版本,分别为 WSL 1 和 WSL 2。

WSL 和虚拟机从表面上看起来是有点类似,都可以运行 linux 操作系统,但实际上有所区别:

  • 集成水平:WSL 提供更深入的集成与主机操作系统Windows。例如,你可以在Windows的文件管理器中直接访问WSL文件系统,也可以在 WSL 中直接运行Windows的可执行文件。而虚拟机则创建了一个相对隔离的环境,虽然虚拟机可以访问主机文件系统,但需要特定的设置,并且整体上没有 WSL 那么直接和方便。
  • 性能:WSL 2 使用了一种轻量级的虚拟化技术,但是它的性能通常比全功能的虚拟机更好,特别是在文件系统性能方面。
  • 系统资源消耗:WSL 通常比全功能的虚拟机更节省系统资源。虚拟机需要为每个实例分配固定的内存和磁盘空间,而WSL的资源使用随着需求而动态变化。
  • 系统调用兼容性:WSL 1 通过转换 Linux 系统调用到 Windows 系统调用,WSL 2 通过提供一个完整的 Linux 内核来实现更好的兼容性。但是,一些特定的、高级的 Linux 系统调用可能在WSL中无法工作。而虚拟机则提供了一个完全的操作系统环境,可以支持所有的系统调用。
  • 安全隔离:虚拟机提供了一个与主机操作系统隔离的环境,因此通常更安全。虽然 WSL 2 也使用虚拟化技术,但它更加集成在主机操作系统中,因此可能没有虚拟机那么安全。

2.迁移 WSL 2 子系统

docker desktop 在安装的时候创建两个 wsl 子系统,使用命令wsl -l -v查看:

  • docker-desktop 是存放程序的,位置 %LOCALAPPDATA%/Docker/wsl
  • docker-desktop-data 是存放镜像的,位置 %LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx

这两个 wsl 子系统都是默认放在系统盘的。

  • 步骤一:先关闭docker
  • 步骤二:停止所有子系统
wsl --shutdown
  • 步骤三:导出两个子系统
wsl --export docker-desktop docker-desktop.tar
wsl --export docker-desktop-data docker-desktop-data.tar
  • 步骤四:删除现有的子系统
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
  • 步骤五:重新载入 wsl 2 子系统(目标路径自己创建)
wsl --import docker-desktop D:\Docker\docker-desktop\ docker-desktop.tar --version 2
wsl --import docker-desktop-data D:\Docker\docker-desktop-data\ docker-desktop-data.tar --version 2
  • 注意:
  • docker-desktop 和 docker-desktop-data 不能放在同一个文件夹,需要分别创建目标路径
  • 一定要指定 --version 2 ,否则导入的会时 wsl 而非 wsl 2,从而导致 docker desktop 无法正常启动
  • 步骤六:重新启动docker desktop

五、与Boot2Docker比较

1.什么是 Boot2Docker

Boot2Docker 是一个轻量级的 Linux 发行版,专门用于运行 Docker 容器。它完全从 RAM 运行,只需要大约 45MB 的下载量并且可以快速启动。

其核心就是一个 boot2docker.iso 镜像文件。在非linux平台(比如mac或windows)中,通常需要跟virtualbox配合,先创建一个linux虚拟机,在虚拟机上跑boot2docker这个linux系统,然后linux系统里面运行docker。

2.比较

  • 系统要求
  •   Boot2Docker需要virtualbox配合运行一个精简linux发行版,不受限于windows的版本
  •   docker desktop 基于 WSL 2 是在一个完整的linux系统上运行,只能在window 10 特定版本以上使用
  • 体量
  •   Boot2Docker 更加轻量级,占据空间小
  •   docker desktop 相对占用更大的空间
  • 功能
  •   Boot2Docker 只提供了一个安装了docker的精简版linux环境,主要是设计用来开发环境使用的,不建议应用到任何生产环境
  •   docker desktop 提供完整的linux环境,而且docker desktop还提供了可视化的操作界面,可以快速搭建k8s或swarm集群
  • 支持
  •   Boot2Docker 官方已经不再维护,同时建议用户向docker desktop迁移
  •   docker desktop 持续维护中

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

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

相关文章

每日一题————P5725 【深基4.习8】求三角形

题目: 题目乍一看非常的简单,属于初学者都会的问题——————————但是实际上呢,有一些小小的坑在里面。 就是三角形的打印。 平常我们在写代码的时候,遇到打印三角形的题,一般简简单单两个for循环搞定 #inclu…

【Clang+LLVM+honggfuzz学习】(二)honggfuzz的安装与试用

书接上篇【ClangLLVMhonggfuzz学习】(一)LLVM简介、安装和第一个Hello Pass 本篇介绍honggfuzz的安装与简单使用 本文架构,PS:可选择观看哦 前言git安装试用编写测试文件demo.c设置环境变量开始fuzzFuzz-ing疑问 前言 漏洞检测做毕设&#…

【leetcode】 c++ 数字全排列, test ok

1. 问题 2. 思路 3. 代码实现 #if 0 class Solution { private:vector<int> path; // 满足条件的一个结果 vector<vector<int>> res; // 结果集 void backtracking(vector<int> nums, vector<bool> used){// 若path的个数和nums个数相等&…

事件循环(2024 面试题)

答题大纲 先说基本知识点&#xff0c;宏任务、微任务有哪些说事件循环机制过程&#xff0c;边说边画图出来说async/await执行顺序注意&#xff0c;可以把 chrome 的优化&#xff0c;做法其实是违法了规范的&#xff0c;V8 团队的PR这些自信点说出来&#xff0c;显得你很好学&a…

Unsafe类详解

1. Unsafe 概念 Unsafe类位于sun.misc包下&#xff0c;它是java实现高并发的基础&#xff0c;通过它可以执行一些不安全的操作&#xff0c;如像C语言一样直接操作内存资源&#xff0c; 它提供的这些方法增强了java对底层资源的操作能力&#xff0c;但同时也增加了程序出错的风…

typdef:深入理解C语言中typdef关键词的用法

typedef&#xff1a;C语言中的类型重命名关键词 在C语言中&#xff0c;typedef 是一个非常有用的关键词&#xff0c;它允许我们为现有的数据类型定义一个新的名称。这不仅使得代码更加清晰易读&#xff0c;还提高了代码的可维护性。在这篇博客中&#xff0c;我们将深入探讨 ty…

git中对子模块的本地修改、提交和推送远程仓库

场景 当前的某个项目&#xff0c;其使用了另一个项目&#xff0c;我在本地需要对子项目进行修改&#xff0c;并将这些修改提交到github中的子项目和父项目。其实在github中&#xff0c;子项目都是特定的指向子项目的某次提交&#xff0c;因此对于父项目的修改&#xff0c;其实…

Linux-Arm GDB调试(本地和远程)

目录 问题描述 已有coredump 没有coredump 小结 问题描述 Linux本机调试使用GDB非常方便&#xff0c;但嵌入式Linux设备资源有限&#xff0c;通常并没有交叉编译工具&#xff0c;那嵌入式设备上的应用发生问题如何查找问题&#xff1f;通常IDE有远程DEBUG功能&#xff0c;这…

OpenHarmony实战:标准系统移植指南

本文描述了移植一块开发板的通用步骤&#xff0c;和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开发者参考。 定义开发板 本文以移植名为MyProduct的开发板为例讲解移植过程&#xff0c;假定MyProduct是MyProductVendor公司的开发板…

[Arduino学习] ESP8266读取DHT11数字温湿度传感器数据

目录 1、传感器介绍 2、接线 3、DHT.h库 1、传感器介绍 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器&#xff0c;是简单环境监测项目的理想选择。 温度分辨率为1C&#xff0c;相对湿度为1&#xff05;。温度范围在0C到50C之间&#xff0c;湿度的测…

自注意力机制详解

视频链接&#xff1a;李宏毅 self-attention讲解上 参考文章&#xff1a;RNN详解      Attention详解      彻底搞懂Attention机制      知乎Transformer详解 传统的编码器解码器架构 一般最简单的编码器-解码器架构都是基于RNN模型的&#xff0c;编码器将输入…

突破校园网限速:使用 iKuai 多拨分流负载均衡(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 1. 简介 由于博主连的内网是限速的&#xff0c;但是不同设备之间的网速却始终差不多&#xff0c;有一天看着…

CSS3新增的语法(三)【2D,3D,过渡,动画】

CSS3新增的语法&#xff08;三&#xff09;【2D,3D,过渡&#xff0c;动画】 10.2D变换10.1. 2D位移10.2. 2D缩放10.3. 2D旋转10.4. 2D扭曲&#xff08;了解&#xff09;10.5. 多重变换10.6. 变换原点 11. 3D变换11.1. 开启3D空间11.2. 设置景深11.3. 透视点位置11.4. 3D 位移11…

R语言中的常用数据结构

目录 R对象的基本类型 R对象的属性 R的数据结构 向量 矩阵 数组 列表 因子 缺失值NA 数据框 R的数据结构总结 R语言可以进行探索性数据分析&#xff0c;统计推断&#xff0c;回归分析&#xff0c;机器学习&#xff0c;数据产品开发 R对象的基本类型 R语言对象有五…

使用OMP复原一维信号(MATLAB)

参考文献 https://github.com/aresmiki/CS-Recovery-Algorithms/tree/master MATLAB代码 %% 含有噪声 % minimize ||x||_1 % subject to: (||Ax-y||_2)^2<eps; % minimize : (||Ax-y||_2)^2lambda*||x||_1 % y传输中可能含噪 yyw % %% clc;clearvars; close all; %% 1.构…

js类型转换

类型转换只有这四种&#xff0c;例如如果要对象转数字&#xff0c;那么就需要先把对象转成原始类型&#xff0c;再从原始类型转到数字。 空数组转原始类型是一个空字符串。空对象转原始类型是[object Object]。 let a {} console.log(a);// NaN //等价于 a->原始 然后原始…

线控悬架系统分析

线控悬架系统分析 附赠自动驾驶学习资料和量产经验&#xff1a;链接 1 线控悬架系统系统发展现状 • 车辆驾乘过程中&#xff0c;操控性和舒适性是两个重要的评价指标&#xff0c;两者很难兼顾&#xff1b; • 线控悬架就是根据路况实际情况自动调节悬架的高度、刚度、阻尼实…

OpenHarmony实战:小型系统移植概述

驱动主要包含两部分&#xff0c;平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等&#xff1b;器件驱动则主要包含通常在SOC外的器件&#xff0c;如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序&#xff0c;HDF驱动框…

【JAVA】基础学习03变量和关键字

文章目录 JAVA变量与运算符1.关键字&#xff08;keyword&#xff09;2.标识符( identifier)2.1命名规则2.2命名规范2.3变量作用和类型2.3.1整型变量2.3.2补充&#xff1a;计算机存储单位2.3.3浮点类型&#xff1a;float、double2.3.4 关于浮点型精度的说明2.3.5 字符类型&#…

Linux:ip和ip协议的初步认识

文章目录 ip协议基本认识ip协议的报头网段划分ip的类型划分 ip协议基本认识 前面对于TCP的内容已经基本结束了&#xff0c;那么这也就意味着在传输层也已经结束了&#xff0c;那么下一步要进入的是的是网络层&#xff0c;网络层中也有很多种协议&#xff0c;这里主要进行解析的…