news 2026/9/9 0:54:18

win11安装docker

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
win11安装docker

1、安装wsl2

2.重启电脑后,手动打开cmd,查看刚刚安装的,

输入wsl.exe

开始菜单也有wsl,但是打开后闪一下就没了,不知道什么情况。

3.选择一个linux发行版安装,根据ai的推荐

wsl.exe --install Ubuntu-22.04

输入后没反应,最佳方法是切到wsl1后再安装linux,安装完成后再切回wsl2.

wsl --set-default-version 1 大概会报错(下图),报错的话就用以下命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

  • 命令解释dism.exe是 Windows 系统自带的部署工具,这个命令的意思是“在线启用名为‘Microsoft-Windows-Subsystem-Linux’的Windows功能,并包含所有子组件,且完成后不立即重启”。

如图显示成功,就可以继续下载linux。

wsl --install -d Ubuntu-22.04

输入后会在0%,等几分钟,进度条会开始动。

自定义用户名:docker

自定义密码。

看到命令行提示符变成类似用户名@电脑名:~$的样子,恭喜你,现在已经成功登录到 Ubuntu 系统.

🚀 安装完成后,可以做什么?

既然系统已经装好,你可以接着完成我们之前讨论的目标:

  1. 先升级到 WSL 2:为了更好的 Docker 性能,建议你现在就将它升级。在 Ubuntu 中输入exit退出,回到 Windows 的 PowerShell 或 CMD,执行我们上次提到的转换命令:

wsl --set-default-version 2

查看已安装的linux.

接下来安装docker的windows版,

百度搜索docker,找到官网,或者直接访问https://www.docker.com/get-started/

网页打开有些慢,打不开可以刷新一下,再等一下。

下载AMD64那个。

下载后双击打开

确保Use WSL 2 instead of Hyper-V这个选项是勾选状态(默认就是勾选的)

提示重启电脑,点击"Close and restart"即可

不登录,点继续。(docker注册账号的页面国内应该是打不开的)

点设置--Resources--WSL integration

确保Enable integration with my default WSL distro开启,

然后能看到刚刚安装的linux,把开关打开,Apply。

开始菜单可以看到在docker之前用wsl安装的Ubuntu,把它打开

输入docker run hello-world验证一下,应该会报错。Docker 无法连接到它的官方镜像仓库(Docker Hub)。核心问题就是网络连接失败,这在国内是使用 Docker 最常遇到的状况。错误中的target machine actively refused it表明连接请求被直接拒绝或超时了。

需要添加国内镜像源,先打开docker设置,来到这里

添加json,把注释去掉
"registry-mirrors": [ "https://docker.nju.edu.cn", // 南京大学镜像源(稳定) "https://docker.mirrors.sjtug.sjtu.cn", // 上海交通大学镜像源 "https://hub-mirror.c.163.com", // 网易镜像(经测试目前有效) "https://ccr.ccs.tencentyun.com" // 腾讯云容器镜像服务 ]

效果如下:

{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "registry-mirrors": [ "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.cn", "https://hub-mirror.c.163.com", "https://ccr.ccs.tencentyun.com" ] }

Apply之后,执行命令注册一下新镜像源,

docker info | grep -A 5 "Registry Mirrors"

再次尝试运行docker run hello-world,应该就可以拉取镜像了,

拉取自己需要的镜像,比如

docker pull swr.cn-north-4.myhuaweicloud.com/ci-service/openharmony-standard-build-env-22.04

查看已下载的镜像:

docker image ls

启动已下载的镜像:

docker run -it --name ohos-build [镜像名] /bin/bash

命令/参数作用解释
docker runDocker 启动容器的核心命令。
-it这是-i-t的组合。它让容器启动后,你能直接进入容器的内部命令行(Shell),就像直接操作一台 Linux 机器一样。
--name ohos-build给这个容器起一个叫ohos-build的名字,方便后续管理(如启动、停止、删除)。如果不指定,Docker 会随机分配一个名字。
swr.cn-north-4...:4.0.0指定用来创建容器的镜像。这里就是你之前下载好的那个完整的镜像名称。
/bin/bash容器启动后,直接运行bash命令,也就是进入命令行模式

容器窗口关了如何重新打开?

docker ps -a

查看所有容器,看status,

重点关注两列:

  • STATUS:显示容器是否在运行(Up表示运行中,Exited表示已停止)。

  • NAMES:你之前给容器起的名字(比如ohos-build)或自动生成的名称。

如果容器仍在运行(STATUS 为Up

直接使用docker exec命令打开一个新的 bash 会话:

docker exec -it <容器名或ID> /bin/bash

例如:

docker exec -it ohos-build /bin/bash

你会立即进入容器的内部命令行,所有之前的环境和文件都保持不变。

如果容器已停止(STATUS 为Exited

先启动容器(让它后台运行),然后再进入:

docker start <容器名或ID> # 启动已停止的容器 docker exec -it <容器名或ID> /bin/bash

例如:

docker start ohos-build docker exec -it ohos-build /bin/bash

搞了一长串,相信有的人已经忘记了刚才都做了什么了。

来回忆一下:安装WSL2--》同时安装了Ubuntu--》安装docker桌面版并且设置修改镜像源,勾选ubuntu--》打开Ubuntu并在里面使用docker run下载启动了指定的镜像。

那么,问题来了,
安装wsl2,Ubuntu,docker桌面版这3者之间是什么关系?
我启动了一个已经下载的镜像后,在里面所做的更改也会更改这个镜像本身吗?万一环境搞坏了我可不想重新下载一遍。

简单来说,WSL2是“地基”,Ubuntu是“房子”,Docker Desktop是“房客和管理员”。它们之间是紧密协作、层层依赖的关系。

1. 核心角色分工

  • WSL 2(技术底座)

    • 它是Windows下的一个轻量级虚拟机,相当于在Windows里搭建了一个高效运行Linux的底层平台

    • 它的职责是让Linux内核能在Windows上流畅、低开销地运行。

  • Ubuntu(运行环境)

    • 它是在WSL2这个平台上运行的具体Linux发行版,就像你在这个地基上盖起的一栋具体的“房子”。

    • 你的Docker命令(如docker run)实际上就是在这栋“房子”里被理解和执行的。

  • Docker Desktop(管理工具)

    • 它是Windows上的一个图形化软件,你可以把它看作“物业管理处”。

    • 它的职责是帮你管理和配置Docker的运行环境,包括决定Docker使用哪个WSL发行版(比如你的Ubuntu)。当你启动Docker Desktop后,它就会把真正的“发动机”——Docker引擎——安装到你指定的那个WSL发行版(Ubuntu)里。

2. 它们是如何协同工作的?

当三者正确配置后,工作流程是这样的:

  1. 你启动Docker Desktop(点击Windows右下角的小鲸鱼)。

  2. Docker Desktop会唤醒WSL 2平台,并向它管理的Ubuntu系统里注入Docker引擎。

  3. 当你在Ubuntu终端里输入docker run时,这个命令会直接与运行在“隔壁”的Docker引擎通信,然后引擎去拉取镜像、创建容器。

  4. 整个过程在底层由WSL2提供Linux兼容层,在用户层面你看到的则是Ubuntu终端和Docker Desktop的界面。

3. 为什么需要这种组合?

这种“三件套”的组合解决了Windows上使用Docker的根本矛盾:

  • Docker依赖Linux内核:Docker容器本质上是Linux进程,需要Linux内核环境才能运行。

  • Windows需要运行Docker:通过WSL2,Windows无需创建完整的虚拟机,就能高效地提供一个Linux内核环境。

  • 用户需要方便地管理:Docker Desktop提供了友好的图形界面和系统托盘,让你可以一键启动、停止Docker,并管理资源分配。

总结一下,你可以把WSL2想象成一台能运行Linux的“虚拟机”Ubuntu是这台虚拟机上安装的操作系统,而Docker Desktop则是帮你在这个系统里安装、启动和管理Docker引擎的助手

==============================================================

第二个问题回答:不会。你在容器里做的任何更改,都不会修改你下载的那个原始镜像。

镜像 vs. 容器:就像“光盘”和“播放器”

你可以把Docker 镜像想象成一张只读的蓝光光盘(或游戏光盘)。它存储了所有固定的内容,比如操作系统、依赖库和应用程序。这张光盘本身是只读的,你无法直接修改光盘上的内容。

当你运行docker run启动一个镜像时,Docker 实际上是在这张只读光盘之上,附加了一个薄薄的、可写的“便签层”。这个“光盘+便签层”的组合,就是一个容器

  • 镜像= 只读的蓝光光盘(永久不变

  • 容器= 光盘 + 可写的便签层(便签层上的更改临时保存

你在容器里创建、修改、删除的任何文件,都发生在这个临时的“便签层”上。原始的光盘(镜像)始终完好无损,不会被改动。

✍️ 实际操作中的表现

结合你之前的场景:

  1. 你运行了docker run -it --name ohos-build ... /bin/bash,这基于你那个镜像创建了一个容器。

  2. 然后你在容器里安装了 JDK,设置了环境变量,还尝试构建项目。

  3. 所有这些更改,都只写在了你这个容器的“便签层”上。你下载的那个镜像本身,在你退出容器后,依然是刚下载时的原始状态,没有任何改变。

🔄 如何验证?

你可以做一个简单的小实验:

  1. 基于同一个镜像,启动另一个新的容器(取个不同的名字):

    bash

    docker run -it --name xxx-test <你的镜像名> /bin/bash
  2. 进入后,你会发现之前你在容器里安装的 JDK、设置的环境变量,这个新容器里一个都没有。它完全是镜像初始的、干净的状态。

💡 如果你保存更改,怎么办?

如果你在容器里配置好了一切(比如装好了 JDK、下载了依赖),希望把这个“已配置好的环境”保存下来,作为一个新的镜像供以后使用,你需要执行docker commit命令:

bash

# 将名为 ohos-build 的容器,保存为一个名为 my-kotlin-env 的新镜像 docker commit ohos-build my-kotlin-env:latest

之后,你就可以基于这个新镜像my-kotlin-env启动容器,它会包含你之前做的所有更改。不过,更推荐的做法是编写Dockerfile来自动化地构建镜像,但这属于更高级的用法了。

总结一下:容器是镜像的一个动态的、临时的实例。你可以在容器里随意“折腾”,不用担心弄坏原始的“母版”镜像。这正是 Docker 隔离性和灵活性的魅力所在。

========================================

电脑关机,第二天开机开始继续之前的工作:开始菜单--搜索Ubuntu--打开,

查看本机的镜像的命令是:

docker image ls

此时有可能提示如下,说明还需要把docker程序打开:

再次执行命令即可:

那么如果此时使用docker run -it --name [容器名] [镜像名] /bin/bash命令,容器名字写昨天的名字,就不是启动容器,而是新建容器,此时会报错,因为重名了。

前面提到过,查看本地容器是

docker ps -a

如果容器还在运行中,那就用:

docker exec -it [容器名] /bin/bash

如果容器已关机,那就用:

docker start <容器名或ID> # 启动已停止的容器 docker exec -it <容器名或ID> /bin/bash # 进入容器
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 0:53:27

RISC-V无线MCU实战:一颗芯片搞定Wi-Fi与BLE

做嵌入式这些年&#xff0c;我最大的感受是&#xff1a;产品选型时最纠结的往往不是算力&#xff0c;而是“一颗芯片能不能把活全干了”。最近在几个物联网方案里频繁看到一类新的芯片&#xff0c;它把RISC-V、Wi-Fi和BLE连接性做进了同一颗MCU里&#xff0c;用一套SDK、一个调…

作者头像 李华
网站建设 2026/9/9 0:51:36

【2026年9月】最新计算机专业面试八股文(全体系总结)

文章目录前言面试核心注意事项第一篇章&#xff1a;计算机通用基础八股&#xff08;全岗位必考&#xff0c;核心权重40%&#xff09;模块一&#xff1a;计算机网络&#xff08;2026高频TOP级&#xff0c;HTTP/3、QUIC为新增超高频&#xff09;1. 网络模型核心2. 传输层核心&…

作者头像 李华
网站建设 2026/8/30 11:59:46

AI模型测试失控解析:从越狱到奖励黑客的工程应对

最近这段时间&#xff0c;AI 模型在测试中表现“失控”的话题被反复讨论。不少公开实验显示&#xff0c;某些模型在压力测试、安全评测甚至正常功能测试中&#xff0c;会出现欺骗评测人员、策略性讨好、绕过安全限制、在考核指标上“作弊”等行为。很多开发者第一反应是&#x…

作者头像 李华
网站建设 2026/8/31 0:58:41

基于Web Audio API的浏览器鼓机与lookahead调度器实现

基于浏览器的鼓机/节拍音序器是 Web Audio API 学习路径中训练价值很高的项目之一。它没有后端依赖&#xff0c;却同时涉及实时音频调度、声音合成、步进网格交互、视觉反馈和性能优化多个层面。很多开发者一接触到这类项目&#xff0c;首先想到的是“播放一段采样音频”&#…

作者头像 李华
网站建设 2026/8/30 15:38:39

Orca Headless Linux 服务器部署:orca serve 完整实战指南

Orca Headless Linux 服务器部署&#xff1a;orca serve 完整实战指南 【免费下载链接】orca Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS. 项目地址: https://g…

作者头像 李华
网站建设 2026/8/30 22:46:43

数学建模竞赛必备:回归分析核心思路、模型选型与全流程实战

1. 项目概述&#xff1a;回归分析在数学建模中的核心地位如果你参加过数学建模竞赛&#xff0c;或者看过那些获奖论文&#xff0c;你会发现一个高频出现的词&#xff1a;“回归分析”。这几乎是每个建模者工具箱里必备的“瑞士军刀”。为什么&#xff1f;因为它解决的是一个最朴…

作者头像 李华