DockerDesktop替换方案

news2025/5/9 23:02:50

背景

由于DockerDesktop并非开源软件,如果在公司使用,可能就有一些限制,那是不是除了使用DockerDesktop外,就没其它办法了呢,现在咱们来说说替换方案。

WSL

WSL是什么,可自行百度,这里引用WSL百度百科,下面咱们直接进入主题

开启子系统

需要管理员权限执行下面操作,打开CMD或PowerShell

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

也可以通过下面方法启用,打开开始菜单,输入启用或关闭Windows功能,在弹出菜单中,勾选虚拟机平台适用于 Linux 的 Windows 子系统,确定后重启系统生效。
在这里插入图片描述
在这里插入图片描述

检查系统版本

对于x86_64 系统:操作系统win 10版本是1903 或更高版本,内部版本为 18362.1049 或更高版本,Win 11也可以的,下面命令检查系统版本

winver

启动虚拟机功能

管理员权限运行,CMD或PowerShell都可以

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

更新Linux内核包

如果有必要的话,可以更新下,下载安装x86_64机器的更新包
下载地址 安装也是需要管理员权限。

更新WSL版本

更新不了,不更新可以用的话,也是OK的

wsl --update [--web-download http://xxxx]
--web-download 可选项,从指定地址下载而不是Microsoft Store 下载最新更新

检查WSL状态

wsl --status
默认分发:OracleLinux_8_5
默认版本:2

上面输出默认版本不是2,可更改为2版本

wsl --set-default-version 2

安装WSL包

这个WSL包,其实就是一个Linux系统了,选择自己熟悉的就OK,可以安装1个或多个,不过一般一个就OK,除非需要在不同系统做测试。
下面的系统,自行选择下载。

  • Ubuntu 24.04
  • Ubuntu 22.04 LTS
  • Ubuntu 20.04
  • Debian GNU/Linux
  • openSUSE Tumbleweed
  • SUSE Linux Enterprise Server 15 SP3
  • openSUSE Leap 15.3
  • Oracle Linux 8.5
  • Oracle Linux 7.9
  • Fedora Remix for WSL
    下载后是一些.Appx,.AppxBundle等后缀的文件,双击即可安装,如果不行,可通过命令行安装,打开Powershell执行
Add-AppxPackage .\xxx.Appx
Add-AppxPackage .\xxx.AppxBundle

安装好后,可在开始菜单中找到,单击即可打开,需要为新的 Linux 分发版创建用户帐户和密码,这个就类似进入操作系统的用户名和密码,自己用设置123456亦可,后续忘记密码,也可以wsl -u root -d Ubuntu_22.04进入根目录,然后执行passwd更改密码。
wsl具体的使用命令可自行搜索,此处略。
进入wsl子系统后,sudo su - 切换到root用户。

跨文件系统工作

1、windows的盘自动默认挂载到了/mnt下。
2、windows下可执行这查看子系统目录

start \\wsl$

3、借助 WSL,Windows 和 Linux 工具和命令可互换使用。

  • 从 Linux 命令行运行 Windows 工具(即 notepad.exe)
  • 从 Windows 命令行(如 PowerShell)运行 Linux 工具(如 grep)
  • 在 Linux 和 Windows 之间共享环境变量

使用 Linux 命令 ls -la 列出文件,并使用 PowerShell 命令 findstr 来筛选包含“go”的单词。

wsl ls -la | findstr "go"

使用 PowerShell 命令 dir 列出文件,并使用 Linux 命令 grep 来筛选包含“go”的单词

C:\> dir | wsl grep go

使用 Linux 命令 ls -la 列出 /proc/cpuinfo Linux 文件系统路径中的文件

C:\> wsl ls -la /proc/xxxx

在linux下也可以使用win的命令

ls -la | findstr.exe /etc/passwd
用win的记事本编辑WSL里的文件
notepad.exe "E:\yyy.txt"

4、禁用互操作特性
使用 root 身份运行以下命令,禁用针对单个 WSL 会话运行 Windows 工具的功能

echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop

若要重新启用 Windows 二进制文件,请退出所有 WSL 会话并重新运行 bash.exe,或者以 root 身份运行以下命令:

echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop

注意:每次切换 WSL 会话后,禁用互操作的结果不会持久保留 – 启动新会话后,会再次启用互操作。

WSL设置

wsl.conf 和 .wslconfig 文件用于针对每个发行版 (wsl.conf) 和全局跨所有 WSL 2 发行版 (.wslconfig) 高级设置选项,为已安装的 Linux 发行版配置设置,使它们在你每次启动 WSL 时自动应用

  • wslconfig 用于在 WSL 2 上运行的所有已安装发行版中配置全局设置
  • wsl.conf 用于为在 WSL 1 或 WSL 2 上运行的每个 Linux 发行版按各个发行版配置本地设置
    必须停止所有的wsl版本超过8s,配置才会生效
# 关闭所有
wsl --shutdown 

wsl.conf

使用 wsl.conf 为 WSL 1 或 WSL 2 上运行的每个 Linux 发行版按各个发行版配置本地设置
文件位于每个wsl的目录/etc/wsl.conf,没有可创建,支持五个部分:automount、network、interop 、boot和 user
下面是示例文件

# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. 
# Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. 
# This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /mnt

# DrvFs-specific options can be specified.  
options = "metadata=disabled,uid=1001,gid=1001,umask=022,fmask=000,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. 
# This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
# wsl 的主机名
# hostname = DemoHost
generateHosts = true
generateResolvConf = true

# Set whether WSL supports interop processes like launching Windows apps and adding path variables. 
# Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
# 在预览体验成员内部版本 17713 和更高版本中可用
[interop]
# 是否支持启动 Windows 进程
enabled = false
# 是否会将 Windows 路径元素添加到 $PATH 环境变量
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = appuser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
# 仅在 Windows 11 和 Server 2022 上可用
command = service docker start
# 启用systemd支持
systemd=true

如果启用了systemd,则应禁用或屏蔽可能导致 WSL 问题的单元。 以下已知会导致 WSL 分发中问题的单元:

  • systemd-resolved.service
  • systemd-networkd.service
  • NetworkManager.service
  • systemd-tmpfiles-setup.service
  • systemd-tmpfiles-clean.service
  • systemd-tmpfiles-clean.timer
  • systemd-tmpfiles-setup-dev-early.service
  • systemd-tmpfiles-setup-dev.service
  • tmp.mount

.wslconfig

为 WSL 2上运行的所有已安装的发行版配置全局设置,默认该文件不存在,必须创建并存储在

%UserProfile%

目录中才能应用这些配置设置,打开该位置

start %UserProfile%

示例文件

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. 
# The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
# kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
# kernelCommandLine = vsyscall=emulate

# 是否在“安全模式”中运行 WSL,这会禁用许多功能,应用于恢复处于错误状态的发行版
# 仅适用于 Windows 11 和 WSL 版本 0.66.2+
safeMode = false

# Sets amount of swap storage space to 8GB, default is 25% of available RAM。0 表示无交换文件
swap=1GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=D:\\soft\\wk\\wsldata\\wsl-swap.vhdx

# Windows 是否能够回收分配给 WSL 2 虚拟机的未使用内存
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=true

# 在 WSL 中打开或关闭对 GUI 应用程序的支持
guiApplications = true

# Turn on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
localhostforwarding=true

# 用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 中运行。 仅适用于 Windows 11
# Disables nested virtualization
nestedVirtualization=false

# 用于在 WSL 2 发行版实例启动时打开显示 dmesg 内容的输出控制台窗口。 仅适用于 Windows 11
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=false

# VM 在关闭之前处于空闲状态的毫秒数。 仅适用于 Windows 11
vmIdleTimeout = 60000

# 仅适用于 networkingMode = NAT。 
# 通知 WSL 将 Linux 中的 DNS 服务器配置为主机上的 NAT
# 设置为 false 会将 DNS 服务器从 Windows 镜像到 Linux
dnsProxy = true

# 如果值为 mirrored,则会启用镜像网络模式。 
# 默认或无法识别的字符串会生成 NAT 网络。需要 Windows 11 版本 22H2 或更高版本
networkingMode = NAT

# 如果设置为 true,则 Windows 防火墙规则以及特定于 Hyper-V 流量的规则可以筛选 WSL 网络流量
# 需要 Windows 11 版本 22H2 或更高版本
firewall = true

# 是否将 DNS 请求从 WSL 代理到 Windows 的方式。需要 Windows 11 版本 22H2 或更高版本
dnsTunneling = true

# WSL 是否使用 Windows 的 HTTP 代理信息。仅在 Windows 11 中可用
autoProxy = true

# 设置存储 Linux 发行版(例如 Ubuntu)文件系统的虚拟硬盘 (VHD) 大小
# 可用于限制分发文件系统允许占用的最大大小
defaultVhdSize = 200GB

# Enable experimental features
[experimental]
# 检测空闲 CPU 使用率后,自动释放缓存的内存
# 设置为 gradual 以慢速释放,设置为 dropcache 以立即释放缓存的内存
# disabled 禁用
autoMemoryReclaim = dropcache

# 如果设置为 true,则任何新创建的 VHD 将自动设置为稀疏虚拟硬盘文件
# 只分配实际使用的磁盘空间,而不是预先分配整个文件大小的磁盘空间
sparseVhd = true

# 仅当 wsl2.dnsTunneling 设置为 true 时才适用
# 如果设置为 true,Windows 将从 DNS 请求中提取问题并尝试解决该问题,从而忽略未知记录
# 需要 Windows 11 版本 22H2 或更高版本
bestEffortDnsParsing = false

# 仅当 wsl2.dnsTunneling 设置为 true 时才适用
# 指定启用 DNS 隧道的情况下将在 Linux resolv.conf 文件中配置的 nameserver
# 需要 Windows 11 版本 22H2 或更高版本
# dnsTunnelingIpAddress = 10.255.255.254        

# 仅当 wsl2.autoProxy 设置为 true 时才适用
# 配置启动 WSL 容器时,WSL 等待检索 HTTP 代理信息的时长(以毫秒为单位)
# 如果代理设置在此时间之后解析,则必须重启 WSL 实例才能使用检索到的代理设置
# 仅在 Windows 11 中可用
initialAutoProxyTimeout = 1000

# 仅当 wsl2.networkingMode 设置为 mirrored 时才适用 
# 指定 Linux 应用程序可以绑定到哪些端口(即使该端口已在 Windows 中使用)
# 通过此设置,应用程序能够仅侦听 Linux 中的流量端口
# 因此即使该端口在 Windows 上用于其他用途,这些应用程序也不会被阻止
# 例如,WSL 将允许绑定到 Linux for Docker Desktop 中的端口 53,因为它只侦听来自 Linux 容器中的请求
# 需要 Windows 11 版本 22H2 或更高版本
# ignoredPorts = 3000,9000,9090

# 仅当 wsl2.networkingMode 设置为 mirrored 时才适用
# 如果设置为 True,将会允许容器通过分配给主机的 IP 地址连接到主机,或允许主机通过此方式连接到容器
# 始终可以使用 127.0.0.1 环回地址,此选项也允许使用所有额外分配的本地 IP 地址
# 仅支持分配给主机的 IPv4 地址
# 需要 Windows 11 版本 22H2 或更高版本
hostAddressLoopback = false

更换wsl默认安装位置

wsl默认安装到了
C:\Users\开机账号\AppData\Local\Packages下的
比如类似这样的:4210OracleAmericaInc.OracleLinux8.5_dm93watqnc2oz
每个子系统一个文件夹,该子目录下的LocalState文件夹里就一个文件,占用空间很大,我们可以通过导出导入方式进行更改。

导出wsl

wsl --export 默认是tar格式

wsl --export Ubuntu D:/XXX/Ubuntu.tar
wsl --export OracleLinux_8_5 E:/wsl/OracleLinux_8_5.tar

取消wsl注册

wsl --unregister <DistributionName>
取消注册后,LocalState文件夹下的大文件被自动删除,运行 wsl --list 将不会再列出
wsl --ungerister Ubuntu
wsl --ungerister OracleLinux_8_5

导入wsl

wsl --import

wsl --import Ubuntu E:/wsl/ubuntu Ubuntu.tar
wsl --import OracleLinux_8_5 E:/wsl/oracleLinux OracleLinux_8_5.tar

podman

Podman是开源软件,大多数公司应该都允许直接使用,其实就是几个二进制命令文件而已,下载地址
Podman Desktop是一个可视化的操作界面,不安装这个也是OK的,熟悉命令的话,类似Docker和Docker Desktop的关系。
完成后,在命令行执行

# 这个需要下载一些东东,要花一些时间
podman machine init
# 启动
podman machine start
# 查看镜像
podman images
# 拉取镜像
podman pull apache/flink

上面在执行podman machine init时,默认安装podman-machine-default在了C盘,并且磁盘增加,即使删除一些镜像后不会缩小,如何更改位置,可自行研究下,目前本人还没尝试更改。由于podman也依赖于wsl,因此本人直接使用的就是wsl。

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

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

相关文章

力扣热题100之搜索二维矩阵 II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 代码 方法一&#xff1a;直接全体遍历 这个方法很直接&#xff0c;但是居然没有超时&#xff0c…

docker操作镜像-以mysql为例

Docker安装使用-CSDN博客 docker操作镜像-以mysql为例 当安装一个新的镜像时可以登录https://hub.docker.com/直接搜索想要安装的镜像&#xff0c;查看文档 1&#xff09;拉取镜像 docker pull mysql 或者 docker pull mysql:版本号 然后直接跳到第4&#xff09;步即可 2…

使用OpenCV 和 Dlib 进行卷积神经网络人脸检测

文章目录 引言1.准备工作2.代码解析2.1 导入必要的库2.2 加载CNN人脸检测模型2.3 加载并预处理图像2.4 进行人脸检测2.5 绘制检测结果2.6 显示结果 3.完整代码4.性能考虑5.总结 引言 人脸检测是计算机视觉中最基础也最重要的任务之一。今天我将分享如何使用dlib库中的CNN人脸检…

React 实现 JWT 登录验证的最小可运行示例

下面是一个用 React 实现 JWT 登录验证的最小可运行示例&#xff0c;包含&#xff1a; React 前端&#xff1a;登录、保存 Token、获取用户数据。模拟后端&#xff1a;用 mock API&#xff08;你也可以接真后端&#xff09;。 &#x1f9f1; 技术栈 React&#xff08;使用 Vi…

Power Query精通指南1:查询结构设计、数据类型、数据导入与迁移(平面文件、Excel、Web)

文章目录 零、Power Query简介0.1 Power Query 主要功能0.2 Power Query 的优势0.3 Power Query 组件 一、Power Query数据处理基本流程1.1 前期准备1.2 提取1.3 转换1.3.1 Power Query 编辑器界面1.3.2 默认转换1.3.3 自定义转换 1.4 加载1.4.1 自动检测数据类型1.4.2 重命名查…

vue2开发者sass预处理注意

vue2开发者sass预处理注意 sass的预处理器&#xff0c;早年使用node-sass&#xff0c;也就是vue2最初默认的编译器。 sass官方推出了dart-sass来替代。 node-sass已经停维很久了。 vue3默认使用的是dart-sass。 Uniapp的官方文档截图 从 HBuilderX 4.56 &#xff0c;vue2 …

使用 Selenium 爬取动态网页数据 —— 实战与坑点详解

本文记录了笔者在爬取网页数据过程中遇到的各种技术挑战&#xff0c;包括页面动态渲染、JavaScript 注入等问题&#xff0c;并最终给出一个可运行的完整方案。 文章目录 网页获取不到数据&#x1f680; 尝试用 Selenium 渲染页面 网页获取不到数据 某网页数据依赖大量 JavaSc…

守护数字家园:个人博客安全防护指南

前言 在之前的文章《WordPress个人博客搭建&#xff08;一&#xff09;》《WordPress个人博客搭建&#xff08;二&#xff09;》《WordPress个人博客搭建&#xff08;三&#xff09;》中&#xff0c;我们已经在非凡云云服务器上&#xff0c;借助1Panel搭建起属于自己的数字庭院…

【网络编程】三、TCP网络套接字编程

文章目录 TCP通信流程Ⅰ. 服务器日志类实现Ⅱ. TCP服务端1、服务器创建流程2、创建套接字 -- socket3、绑定服务器 -- bind&#x1f38f;4、服务器监听 -- listen&#x1f38f;5、获取客户端连接请求 -- acceptaccept函数返回的套接字描述符是什么&#xff0c;不是已经有一个了…

trae ai编程工具

Trae&#xff0c;致力于成为真正的 AI 工程师&#xff08;The Real Al Engineer&#xff09;。Trae 旗下的 AI IDE 产品&#xff0c;以智能生产力为核心&#xff0c;无缝融入你的开发流程&#xff0c;与你默契配合&#xff0c;更高质量、高效率完成每一个任务。 版本差异 国内…

神经网络发展历程——积跬步至千里

神经网络类型层线性or非线性创新问题备注感知器单层线性模型&#xff0c;输出 1 1 1&#xff0c; − 1 -1 −1误差反馈学习阈值函数不可导&#xff0c;构造学习规则与感知器准则等价线性神经元单层线性模型梯度下降法训练参数线性函数&#xff0c;多层仍是线性变换本质上是最小…

荣耀A8互动娱乐组件部署实录(第2部分:界面逻辑与资源加载机制)

作者&#xff1a;从 Spine 骨骼动画里抠图三小时没睡的美术兼前端苦工 一、界面整体架构拆解 荣耀A8组件采用的是典型的分模块 UI 架构&#xff0c;即&#xff1a;主界面为入口容器&#xff0c;不同子页面&#xff08;如商城、银行、客服、游戏入口&#xff09;以逻辑功能划分…

mac 使用 Docker 安装向量数据库Milvus独立版的保姆级别教程

Milvus 特点&#xff1a;开源的云原生向量数据库&#xff0c;支持多种索引类型和GPU加速&#xff0c;能够在亿级向量规模下实现低延迟高吞吐。具有灵活的部署选项和强大的社区支持。 适用场景&#xff1a;适合处理超大规模数据和高性能需求的应用&#xff0c;如图像搜索、推荐…

技术视界 | 青龙机器人训练地形详解(一):如何创建一个地形

机器人强化学习中的地形训练是利用强化学习算法让机器人在不同地形环境中通过试错学习最优行为策略的过程&#xff0c;通过环境建模、策略学习与优化等环节&#xff0c;使机器人能够自主适应复杂多变的地形&#xff0c;提高其移动效率、稳定性和自主性&#xff0c;减少人为干预…

2025-05-04 Unity 网络基础6——TCP心跳消息

文章目录 1 Disconnect 方法2 心跳消息 ​ 在客户端主动退出时&#xff0c;我们会调用 socket 的 ShutDown() 和 Close() 方法&#xff0c;但调用这两个方法后&#xff0c;服务器端无法得知客户端已经主动断开。 ​ 本文主要介绍在网络通信中&#xff0c;如何服务端如何判断客…

word导出pdf带有目录导航栏-error记

1、打开word文档——>点击"视图"选项卡——>勾选"导航窗格" 2、点击"文件"——>导出——>创建PDF/XPS 3、点击"选项"——>勾选"创建书签时使用(C)" "标题(H)" 4、点击"确定"——>点击…

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…

HarmonyOS-hdc远程网络方式连接设备

hdc工具使用手册 1 hdc简介 hdc&#xff08;OpenHarmony Device Connector&#xff09;是为开发人员提供的用于设备连接调试的命令行工具&#xff0c;pc端开发机使用命令行工具hdc&#xff0c;该工具需支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备&#xff08;或模…

奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆

在数字化浪潮席卷全球的今天&#xff0c;企业正面临着前所未有的数据挑战与机遇。如何高效、精准地挖掘数据价值&#xff0c;已成为推动业务增长、提升竞争力的核心议题。奥威BI&#xff0c;作为智能AI数据分析领域的领军者&#xff0c;凭借其创新的AIBI融合模式&#xff0c;正…

第三节第一部分:Static修饰类变量、成员变量

总结 案例 要求 代码&#xff1a; User类&#xff1a; package com.day1_static;public class User {public static int num;public User() {User.num;} }Test类&#xff1a; package com.day1_static;public class Test {public static void main(String[] args) {User us…