DockerDesktop替换方案

背景

由于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.mzph.cn/bicheng/79933.shtml

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

相关文章

『Linux_网络』 基于状态机的Connect断线重连

客户端会面临服务器崩溃的情况&#xff0c; 我们可以试着写一个客户端重连的代码&#xff0c; 模拟并理 解一些客户端行为&#xff0c; 比如游戏客户端等。 客户端部分&#xff0c;我们本次采用状态机的设计模式实现 下面是关于状态机模式的介绍 状态机模式 状态机模式&…

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…

【算法专题十】哈希表

文章目录 0.哈希表简介1. 两数之和1.1 题目1.2 思路1.3 代码 2.判断是否为字符重排2.1 题目2.2 思路2.3 代码 3. leetcode.217.存在重复元素3.1 题目3.2 思路3.3 代码 4. leetcode.219.存在重复的元素Ⅱ4.1 题目4.2 思路4.3 代码 5. leetcode.49.字母异位词分组5.1 题目5.2 思路…

【前缀和】矩阵区域和

文章目录 1314. 矩阵区域和解题思路1314. 矩阵区域和 1314. 矩阵区域和 ​ 给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: i - k <= r <= i + k, j - k <= c <= j + k …

MyBatis的SQL映射文件中,`#`和`$`符号的区别

在MyBatis的SQL映射文件中,#和$符号用于处理SQL语句中的参数替换,但它们的工作方式和使用场景有所不同。 #{} 符号 预编译参数:#{} 被用来作为预编译SQL语句的占位符。这意味着MyBatis会将你传入的参数设置为PreparedStatement的参数,从而防止SQL注入攻击,并允许MyBatis对…

Linux中为某个进程临时指定tmp目录

起因&#xff1a; 在linux下编译k8s&#xff0c;由于编译的中间文件太多而系统的/tmp分区设置太小&#xff0c;导致编译失败&#xff0c;但自己不想或不能更改/tmp分区大小&#xff0c;所以只能通过其他方式解决。 现象&#xff1a; tmp分区大小&#xff1a; 解决方法&#x…

Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因

1.问题描述 本地Windows环境开发的Springboot项目同样的mysql版本&#xff0c;jdk版本&#xff0c;tomcat版本&#xff0c;本地运行没有任何问题&#xff0c;发布到阿里云服务器上时报以下问题&#xff1a; 06-May-2025 20:06:12.842 警告 [main] org.apache.catalina.loader…

主流国产大模型(以华为盘古大模型和腾讯混元大模型为例)API调用接口的具体参数和使用方法,包括Python和C++的示例代码

以下是主流国产大模型&#xff08;以华为盘古大模型和腾讯混元大模型为例&#xff09;API调用接口的具体参数和使用方法&#xff0c;包括Python和C的示例代码。 华为盘古大模型 API参数&#xff1a; - model&#xff1a;模型名称&#xff0c;如pangu-nlp-large。 - messages&…

高效调用京东 API 实战:商品详情页实时数据采集接口开发指南​

在当今数字化商业环境中&#xff0c;电商数据的实时获取与分析对于企业的决策制定和市场竞争力提升至关重要。京东作为国内领先的电商平台&#xff0c;提供了丰富的 API 接口&#xff0c;允许开发者高效地获取商品详情页的实时数据。本文将详细介绍如何通过实战开发&#xff0c…

MFC自定义控件开发与使用指南

MFC自定义控件开发与使用指南 自定义控件、双缓冲 1. 概述 MFC(Microsoft Foundation Classes)框架提供了丰富的内置控件,但在实际开发中,我们常常需要创建自定义控件来满足特定的界面需求。本文将详细介绍如何在MFC中开发自定义控件,并以CCustomTextControl为例,展示自…

第100+40步 ChatGPT学习:R语言实现多轮建模

回顾一下什么叫多轮建模&#xff1a; 要综合判断一个模型好不好&#xff0c;一次随机抽样是不行的&#xff0c;得多次抽样建模&#xff0c;看看整体的性能如何才行&#xff08;特别是对于这种小训练集&#xff09;。 所以我的思路是&#xff0c;随机抽取训练集和验证集2000次…

编码器型与解码器型语言模型的比较

编码器型与解码器型语言模型的比较 1. 引言 自然语言处理&#xff08;NLP&#xff09;领域近年来取得了革命性进展&#xff0c;这在很大程度上归功于基于Transformer架构的语言模型。在这一技术生态中&#xff0c;编码器型&#xff08;Encoder-only&#xff09;和解码器型&am…

python--------修改桌面文件内容

目录 1. 文件的读写1. 写入文件2. 读取文件3. 追加内容到文件 2.file_path 的常见方法1. 绝对路径2. 相对路径3. 使用 os.path 模块构建路径5. 路径操作5. 用户主目录路径 4. 修改文件内容1.将修改后的内容写回文件2. 逐行处理文件内容3. 使用上下文管理器确保文件安全 1. 文件…

爱普生VG7050EFN压控晶振在小基站的应用优势

在 5G 通信时代&#xff0c;小基站作为提升网络覆盖和容量的重要一环&#xff0c;小基站的稳定运行对于保障用户流畅的通信体验起着关键作用。而在小基站的核心组件中&#xff0c;时钟信号源的质量直接影响着通信质量和设备性能。爱普生VG7050EFN晶振凭借其高性能、小尺寸和低功…

人工智能如何革新数据可视化领域?探索未来趋势

在当今数字化时代&#xff0c;数据如同汹涌浪潮般不断涌现。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;全球每年产生的数据量将从 2018 年的 33ZB 增长到 2025 年的 175ZB。面对如此海量的数据&#xff0c;如何有效理解和利用这些数据成为了关键问题。数据可视…

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点

精益数据分析&#xff08;42/126&#xff09;&#xff1a;移动应用商业模式的深度剖析与实战要点 在创业和数据分析的学习之路上&#xff0c;我们持续探索不同商业模式的奥秘&#xff0c;今天聚焦于移动应用商业模式。我希望和大家一起进步&#xff0c;深入解读《精益数据分析…

未来 CSS:变量、容器查询与新特性的探索

引言&#xff1a;CSS 演进与未来展望 在前端开发的快速发展浪潮中&#xff0c;CSS 已从简单的样式标记语言蜕变为构建现代设计系统的强大基础。根据 HTTP Archive 的 Web Almanac 的调查&#xff0c;超过 86% 的网站已采用至少一项现代 CSS 特性&#xff0c;这一数字仍在持续攀…

概统期末复习--速成

随机事件及其概率 加法公式 推三个的时候ABC&#xff0c;夹逼准则 减法准则 除法公式 相互独立定义 两种分析 两个解法 古典概型求概率&#xff08;排列组合&#xff09; 分步相乘、分类相加 全概率公式和贝叶斯公式 两阶段问题 第一个小概率*A在小概率的概率。。。累计 …

论微服务架构设计及应用

目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)

【东枫科技】AMD / Xilinx Alveo™ V80计算加速器卡

AMD / Xilinx Alveo™ V80计算加速器卡 AMD/Xilinx Alveo ™ V80计算加速器卡是一款功能强大的计算加速器&#xff0c;基于7nm Versal™ 自适应SoC架构而打造。 AMD/Xilinx Alveo V80卡设计用于内存密集型任务。 这些任务包括HPC、数据分析、网络安全、传感器处理、计算存储和…