一篇教程搞定Windows系统中的Docker应用安装
1. 引言
Docker是一个用于创建、管理和编排容器的应用。容器是运行在操作系统上的一个应用,具有规模小、轻量化的特性。相对于虚拟机技术,容器可以为我们节省大量的系统资源,也正因此,容器可以轻松地在裸机系统以及多种云服务环境中移动。由于Docker是依赖Linux内核的应用,在Linux系统和MacOS系统中安装Docker相对于Windows系统来说比较简单,然而,大部分初学者使用的是Windows系统的电脑,在安装Docker过程中遇到了需要安装WSL、开启CPU虚拟化等问题,这些问题很容易造成安装过程混乱并导致安装失败。因此,本文特意针对Windows系统中安装Docker应用过程进行了详细讲解,帮助读者厘清Docker应用的安装逻辑,实现Docker应用在Windows系统的成功安装和运行。
2. “Docker -> WSL -> Windows”的依赖逻辑
作为一个容器应用,Docker与Linux系统颇有渊源:现代容器技术的是起源于Linux系统的。Linux系统的内核命名空间(Kernel Namespace)、控制组(Control Group)和联合文件系统(Union File System)技术是容器所依赖的基础,Docker所遵循的开放容器计划(The Open Container Initiative, OCI)也是在Linux基金会的支持下运行和发展。所以,要安装Docker,就要先有个Linux系统内核支持。在Windows系统上如何获得Linux系统内核支持呢?答案是使用WSL。WSL是适用于 Linux 的 Windows 子系统,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。有关WSL的具体介绍可以参考微软官方的介绍“什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn”。综上,要想在Windows上安装Docker应用,首先要安装WSL以获得Linux内核支持,然后再安装Docker Desktop应用以运行Docker内核和Docker的图形化操作界面。
3. 安装方法
3.1 安装WSL
在管理员模式下打开 PowerShell 或 Windows 命令提示符应用,打开时要用右键单击并选择“以管理员身份运行”,在终端窗口输入wsl --install命令并执行,执行完成后重启计算机。
wsl --install
WSL会默认安装Linux系统的Ubuntu发行版系统,如果仅为了安装Docker提供Linux内核支持,则使用此默认发型版系统即可。
3.2 安装Docker Desktop
WSL安装完成后,下载并安装Docker Desktop。进入Docker官网”,下载对应系统版本的安装程序,即"Download for Windows"。下载完成后,双击安装包进行安装,安装完成后,打开Docker Desktop应用可以看到初始界面。在界面中需要重点注意的是左下角的Docker内核运行状态是否为绿底显示的“Engine Running”或者“”。

4. 是否安装成功?初始化一个容器试试。
打开命令行终端,我们可以使用docker container命令初始化一个容器。
$ docker container run -it debian:stable /bin/bash
Unable to find image 'debian:stable' locally
stable: Pulling from library/debian
…(省略)
Status: Downloaded newer image for debian:stable
$ [root@docker-id]#
当你看到命令行界面多出了[root@docker-id]#之后,说明你已经成功的进入了CentOS系统了。接下来,我们可以在容器(Container)中尝试几个简单的命令:
(1)使用pwd命令查看所在目录
(2)使用ls命令查看目录下的文件列表
当我们想退出docker环境,回到我们的本机的shell,可以使用exit命令退出。
除了使用命令行操作Docker之外,我们也可以使用Docker Desktop这个图形化界面进行镜像管理、容器管理、数据卷管理等操作,操作界面很直观,本文不多赘述。
至此,Docker就安装成功了,我们可以使用Docker随时随地的创建带有系统、应用及服务的容器了。
FAQ
- 微软官方对于WSL安装的更详细介绍可见“安装 WSL | Microsoft Learn”。
- WSL安装过程中可能遇到的常见问题解决方案可见“排查适用于 Linux 的 Windows 子系统问题”.
一篇教程搞定Windows系统中的Docker应用安装的更多相关文章
- windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法
因为dotnet core runtime依赖vc++2015,如果系统未安装vc++2015则会报上面的错误 解决方案:先下载安装vc++2015再安装dotnet core runtime, vc ...
- Python 编程环境搭建(Windows 系统中)
由于大家普遍使用 Windows 系统,所以本文只介绍 Windows 系统中 Python 环境的安装. 在 Windows 中安装 Python 与安装普通软件没什么差别,下载所需版本的安装包后, ...
- 解决Macbook Pro 2017安装Windows10双系统后在Windows系统中Apple蓝牙鼠标不能使用问题
MAC BOOK PRO 2017安装Windows10双系统 在Windows系统中蓝牙鼠标不能使用解决办法 最近因工作需要,macOS系统不能要求,大部分工作必须要在Windows系统中进行,最初 ...
- bat批处理文件搞定所有系统问题
bat批处理文件搞定所有系统问题 分类: WINDOWS -----------bat批处理文件搞定所有系统问题--------- 一.查漏补缺——给系统功能添把火 我们的操作系统虽然功 ...
- [转帖]面试问Kafka,这一篇全搞定
面试问Kafka,这一篇全搞定 https://os.51cto.com/art/201911/606207.htm 图片来自 Pexels Kafka 基础 消息系统的作用 大部分小伙伴应该都清楚, ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- 番外篇1:在Windows环境中安装JDK
他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...
- Windows系统中CMD wmic查看硬盘、内存、CPU、BIOS、网卡等信息。(附带脚本)
目录 Windows系统中CMD wmic查看硬盘.内存.CPU.BIOS.网卡等信息. 查看内存相关 查看内存主板数量(两条命令均可) 查看物理内存 查看逻辑内存 查看缓存 查看虚拟内存 查看网络相 ...
- 在Windows系统中配置Google AddressSanitizer
Google AddressSanitizer简介 AddressSanitizer (ASan) 是 C 和 C++ 的内存错误检测软件,它可以检测: 释放指针后继续使用 堆缓冲区溢出 栈缓冲区溢出 ...
- 【Azure 环境】在Windows系统中 使用Terraform创建中国区Azure资源步骤(入门级)
Terraform(全称:Hashicorp Terraform )是一种开源工具,用于预配和管理云基础结构. 它将基础结构编入描述云资源拓扑的配置文件中. 这些资源包括虚拟机.存储帐户和网络接口等. ...
随机推荐
- WARN o.a.t.util.scan.StandardJarScanner - Failed to scan [file:/D:/Mavencangku/com/sun/xml/bind/jaxb-core/2.3.0/jaxb-api.jar] from classloader hierarchy
1.SpringBoot项目启动突然报错 2024-03-27 14:57:41 [restartedMain] WARN o.a.t.util.scan.StandardJarScanner - F ...
- Python爬虫爬取国家统计局网站【统计用区划和城乡划分代码】并存入MySQL数据库
国家统计局网站相关分级页面截图 基本思路 爬取每个页面的a标签内容,生成省市两级数据字典,最后合成区县对应的链接,爬取第三层区划代码和名字,结合省市两级名字生成最后的标准. 代码 1 import p ...
- 【已解决】idea编译器插入数据到数据库乱码以及jsp页面乱码的解决方法
1.jsp页面需要设置编码格式为utf-8 1 <%@ page contentType="text/html;charset=UTF-8" language="j ...
- defer 延迟调用【GO 基础】
〇.前言 在 Go 语言中,defer 是一种用于延迟调用的关键字. defer 在 Go 语言中的地位非常重要,它是确保资源正确释放和程序健壮性的关键字. 本文将通过示例对其进行专门的详解. 一.d ...
- #虚树,树形dp#洛谷 3233 [HNOI2014]世界树
题目 分析 考虑建一棵虚树,倍增找到虚树上相邻两个点的中间点统计答案 记录每个虚树点最近的距离以及编号最小的点,主要是细节问题 代码 #include <cstdio> #include ...
- 你真的了解java class name吗?
在面向对象的世界,Class是java的基础.java.lang.Class实际上是继承自java.lang.Object. class有一个方法叫做getName,该方法会返回(class, int ...
- OpenHarmony如何切换横竖屏?
前言 在日常开发中,大多APP可能根据实际情况直接将APP的界面方向固定,或竖屏或横屏.但在使用过程中,我们还是会遇到横竖屏切换的功能需求,可能是通过物理重力感应触发,也有可能是用户手动触发.所以本文 ...
- 深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
在本文中,我们将介绍 IoC(控制反转)和 DI(依赖注入)的概念,以及如何在 Spring 框架中实现它们. 什么是控制反转? 控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给 ...
- FreeMarker 去除循环末尾的符号
在使用 FreeMarker 模板引擎来生成文件时,经常会使用到 list 标签用于循环生成. 有时会遇到需要处理末尾符号的情况,比如 Json 文件,循环生成的标签中末尾是不需要 , 的,例如: & ...
- go切片和指针切片
转载请注明出处: 在Go语言中,切片(Slice)和指针的切片(即切片中每个元素都是指向某种数据类型的指针)是两个不同的概念,它们各自具有特定的用途和优势. 切片(Slice) 切片是对数组的一个连续 ...