win11安装docker

📅 发布时间:2026/8/28 8:40:59
win11安装docker
1、安装wsl22.重启电脑后手动打开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 系统. 安装完成后可以做什么既然系统已经装好你可以接着完成我们之前讨论的目标先升级到 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下载启动了指定的镜像。那么问题来了安装wsl2Ubuntudocker桌面版这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. 它们是如何协同工作的当三者正确配置后工作流程是这样的你启动Docker Desktop点击Windows右下角的小鲸鱼。Docker Desktop会唤醒WSL 2平台并向它管理的Ubuntu系统里注入Docker引擎。当你在Ubuntu终端里输入docker run时这个命令会直接与运行在“隔壁”的Docker引擎通信然后引擎去拉取镜像、创建容器。整个过程在底层由WSL2提供Linux兼容层在用户层面你看到的则是Ubuntu终端和Docker Desktop的界面。3. 为什么需要这种组合这种“三件套”的组合解决了Windows上使用Docker的根本矛盾Docker依赖Linux内核Docker容器本质上是Linux进程需要Linux内核环境才能运行。Windows需要运行Docker通过WSL2Windows无需创建完整的虚拟机就能高效地提供一个Linux内核环境。用户需要方便地管理Docker Desktop提供了友好的图形界面和系统托盘让你可以一键启动、停止Docker并管理资源分配。总结一下你可以把WSL2想象成一台能运行Linux的“虚拟机”Ubuntu是这台虚拟机上安装的操作系统而Docker Desktop则是帮你在这个系统里安装、启动和管理Docker引擎的助手。第二个问题回答不会。你在容器里做的任何更改都不会修改你下载的那个原始镜像。镜像 vs. 容器就像“光盘”和“播放器”你可以把Docker 镜像想象成一张只读的蓝光光盘或游戏光盘。它存储了所有固定的内容比如操作系统、依赖库和应用程序。这张光盘本身是只读的你无法直接修改光盘上的内容。当你运行docker run启动一个镜像时Docker 实际上是在这张只读光盘之上附加了一个薄薄的、可写的“便签层”。这个“光盘便签层”的组合就是一个容器。镜像 只读的蓝光光盘永久不变容器 光盘 可写的便签层便签层上的更改临时保存你在容器里创建、修改、删除的任何文件都发生在这个临时的“便签层”上。原始的光盘镜像始终完好无损不会被改动。✍️ 实际操作中的表现结合你之前的场景你运行了docker run -it --name ohos-build ... /bin/bash这基于你那个镜像创建了一个容器。然后你在容器里安装了 JDK设置了环境变量还尝试构建项目。所有这些更改都只写在了你这个容器的“便签层”上。你下载的那个镜像本身在你退出容器后依然是刚下载时的原始状态没有任何改变。 如何验证你可以做一个简单的小实验基于同一个镜像启动另一个新的容器取个不同的名字bashdocker run -it --name xxx-test 你的镜像名 /bin/bash进入后你会发现之前你在容器里安装的 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 # 进入容器