GVKun编程网logo

windows vagrant共享目录设置问题(vagrant win10)

5

对于想了解windowsvagrant共享目录设置问题的读者,本文将提供新的信息,我们将详细介绍vagrantwin10,并且为您提供关于AdDuplex:Windows1021H1和Windows1

对于想了解windows vagrant共享目录设置问题的读者,本文将提供新的信息,我们将详细介绍vagrant win10,并且为您提供关于AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比的有价值信息。

本文目录一览:

windows vagrant共享目录设置问题(vagrant win10)

windows vagrant共享目录设置问题(vagrant win10)

Vagrant 笔记

Vagrant 介绍

  • 建立和删除虚拟机
  • 配置虚拟机运行参数
  • 管理虚拟机运行状态
  • 自动配置和安装开发环境
  • 打包和分发虚拟机运行环境

Vagrant的运行,需要依赖某项具体的虚拟化技术,最常见的有VirtualBox以及VMWare两款,早期,Vagrant只支持VirtualBox,后来才加入了VMWare的支持。

​ 为什么我们要选择Vagrant呢?因为它有跨平台、可移动、自动化部署无需人工参与等优点。

环境安装

  1. 下载并安装 virtualbox(virsion:6.0.8)

    下载地址:https://www.virtualbox.org/wiki/Downloads
    安装过程很简单,傻瓜式的一步一步点下去。

  2. 下载并安装vagrant(virsion:2.2.5)

    下载地址:https://www.vagrantup.com/downloads.html
    安装过程依旧没什么难的,跟着提示一步一步next。

    注意:下载的时候,virtualbox和vagrant的版本要搭配,建议都下载最新版的。还有就是要根据自己的操作系统版本进行选择32位或者64位下载。在windows系统中,可能还需要配置环境变量以及一定要开启VT-x/AMD-V硬件加速。

Vagrant 基本命令

  • 在空文件夹初始化虚拟机 vagrant init [box-name]

  • 在初始化完的文件夹内启动虚拟机 vagrant up

  • ssh登录启动的虚拟机 vagrant ssh

  • 挂起启动的虚拟机 vagrant suspend

  • 重启虚拟机 vagrant reload

  • 关闭虚拟机 vagrant halt

  • 查找虚拟机的运行状态 vagrant status

  • 销毁当前虚拟机 vagrant destroy

  • 列出本地环境中所有的box vagrant box list

  • 添加box到本地vagrant环境 vagrant box add box-name(box-url)

  • 更新本地环境中指定的box vagrant box update box-name

  • 删除本地环境中指定的box vagrant box remove box-name

  • 重新打包本地环境中指定的box vagrant box repackage box-name

  • 在线查找需要的box 官方网址:https://app.vagrantup.com/boxes/search

Vagrantfile

  1. vm provider通用配置
    虚机容器提供者配置,对于不同的provider,特有的一些配置,此处配置信息是针对virtualbox定义一个提供者,命名为vb,跟前面一样,这个名字随意取,只要节点内部调用一致即可。

    配置信息又分为通用配置和个性化配置,通用配置对于不同provider是通用的,常用的通用配置如下:

    vb.name = "centos7"
    #指定vm-name,也就是virtualbox管理控制台中的虚机名称。如果不指定该选项会生成一个随机的名字,不容易区分。
    vb.gui = true
    # vagrant up启动时,是否自动打开virtual box的窗口,缺省为false
    vb.memory = "1024"
    #指定vm内存,单位为MB
    vb.cpus = 2
    #设置CPU个数
    
    config.vm.hostname = "node1"
    #hostname设置
    
    config.vm.synced_folder ''.'', ''/vagrant'', disabled: true #必须先禁用默认的同步目录,否则会报错,原因未知!!!
    config.vm.synced_folder "D:/xxx/code", "/home/www/"
    #同步目录设置
    
    config.vm.network "forwarded_port", guest: 80, host: 8080
    #端口转发设置
    
    config.vm.network "public_network", ip: "192.168.0.200"
    #创建一个bridge桥接网络,指定IP
    
  2. vm provider个性化配置(virtualbox)
    上面的provider配置是通用的配置,针对不同的虚拟机,还有一些的个性的配置,通过vb.customize配置来定制。
    对virtual box的个性化配置,可以参考:VBoxManage modifyvm 命令的使用方法。详细的功能接口和使用说明,可以参考virtualbox官方文档。

    config.vm.provider "virtualbox" do |vb|
    
        #修改vb.name的值
        vb.customize ["modifyvm", :id, "--name", "mfsmaster2"]
    
        #如修改显存,缺省为8M,如果启动桌面,至少需要10M,如下修改为16M:
        vb.customize ["modifyvm", :id, "--vram", "16"]
    
        #调整虚拟机的内存
         vb.customize ["modifyvm", :id, "--memory", "1024"]
    
        #指定虚拟CPU个数
         vb.customize ["modifyvm", :id, "--cpus", "2"]
    
        #增加光驱:
        vb.customize ["storageattach",:id,"--storagectl", "IDE Controller","--port","0","--device","0","--type","dvddrive","--medium","/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"]
        #注:meduim参数不可以为空,如果只挂载驱动器不挂在iso,指定为“emptydrive”。如果要卸载光驱,medium传入none即可。
        #从这个指令可以看出,customize方法传入一个json数组,按照顺序传入参数即可。
    
        #json数组传入多个参数
        vb.customize ["modifyvm", :id, "--name", “mfsserver3", "--memory", “2048"]
    end
    

共享目录无法设置的原因分析

启动过程中报出信息:
No guest additions were detected on the base box for this VM!
可以看出 centos7 缺少 Virtualbox Guest Additions

解决方法:

  • 安装 vagrant-vbguest vagrant plugin install vagrant-vbguest

  • 启动过程会自动安装 Virtualbox Guest Additions,启动后配置的共享目录可以双向读写

  • Vagrantfile 配置共享目录,挂载位置不能使用 /vagrant

    #首先禁用系统默认的共享目录,否则报错,原因未知!!!
    config.vm.synced_folder ''.'', ''/vagrant'', disabled: true
    
    #然后设置需要的共享目录
    config.vm.synced_folder "D:/xxx/code", "/code",
    owner: "root", group: "root",
    type: "rsync",
    rsync__exclude: ".git/",
    rsync__args: ["--verbose", "--rsync-path=''sudo rsync''", "--archive", "--delete", "-z"]
    or
    config.vm.synced_folder "D:/xxx/code", "/code",
    mount_options: ["uid=1234", "gid=1234"]
    

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex 关于 Windows 10 统计数据的最后一份报告是几个月前的。从那以后发生了很多事情。因为Windows 10 2004的比例明显缩水,Windows 10 21H1的比例有所增加。

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增长 - 2021 年 7 月

事实上,现在有 26.6% 的用户在使用 Windows 10 21H1。Windows 10 20H2 的份额从 40.1% 下降到 36.3%,而 2004 年的份额从 40.6% 下降到“仅”24.6%。

有趣的是内部版本用户数量的增加。这里的比例通常最多在 0.4% 和 0.7% 之间波动。但现在仅 Windows 11 就已经拥有 0.9% 的份额,Windows 10 Insider 已经拥有 0.2% 的份额。现在已经总结了旧版本的比例。与 1903 年和 1909 年一起是 11.5%。

C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

如何解决C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

我编写了一个应用程序来帮助用户使用 C# 生成字母。我创建了以富文本格式保存在 sql Server 数据库中的模板。我的开发机器是 Windows 7,我使用 Visual Studio 2019 来编写应用程序。我使用 NuGet 添加 Word 的互操作引用。该应用程序配置为面向 x86 的 Release、平台 Active(Any cpu)。它是一个 ClickOnce 应用程序,从共享驱动器安装在一个单独的目录中,但与保存字母的驱动器相同。

该应用程序在我的机器上正常运行,但在 Windows 10 用户机器上运行不正常。当它尝试保存文件时,她收到一条错误消息,提示“抱歉,我们找不到该文件”。我们都有 Word 2016。两台机器都是 64 位。我将这封信保存为 Word 中的备份,然后导出为 PDF。在导出为 PDF 之前,代码无法保存 Word 文档。请参阅下面的代码片段:

  1. public static void SavetoWord2(string CoverLetter,string LetterText,string FileSave,string BackUpSave,ref string ErrorString)
  2. {
  3. try
  4. {
  5. Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
  6. string headerfooterFile = Properties.FileResources.headerfooterTemplate;
  7. Document odoc = new Document();
  8. odoc = oWord.Documents.Add(@headerfooterFile);
  9. odoc.Activate();
  10. try
  11. {
  12. Clipboard.Clear();
  13. Clipboard.SetText(CoverLetter,TextDataFormat.Rtf);
  14. odoc.ActiveWindow.Selection.Paste();
  15. Clipboard.Clear();
  16. Clipboard.SetText(LetterText,TextDataFormat.Rtf);
  17. odoc.ActiveWindow.Selection.Paste();
  18. //01/26/2021 JS having trouble with the save on Pam''s machine so going to try to capture the correct error.
  19. try
  20. {
  21. odoc.SaveAs(@BackUpSave);
  22. }
  23. catch (Exception exBU)
  24. {
  25. ErrorString = "Error trying to save " + @BackUpSave + ": " + exBU.Message;
  26. }
  27. try
  28. {
  29. odoc.ExportAsFixedFormat(@FileSave,WdExportFormat.wdExportFormatPDF);
  30. }
  31. catch (Exception exPDF)
  32. {
  33. if (string.IsNullOrEmpty(ErrorString))
  34. {
  35. ErrorString = "Error trying to save " + @FileSave + " PDF: " + exPDF.Message;
  36. }
  37. else
  38. {
  39. ErrorString += " and Error trying to save " + @FileSave + " PDF: " + exPDF.Message;
  40. }
  41. }
  42. }
  43. catch (Exception exInner)
  44. {
  45. ErrorString = exInner.Message;
  46. MessageBox.Show(exInner.Message,Properties.LetterResources.SavetoWord,MessageBoxButtons.OK,MessageBoxIcon.Error);
  47. }
  48. Clipboard.Clear();
  49. oWord.Quit(SaveChanges: 0);
  50. Marshal.FinalReleaseComObject(oWord);
  51. //oWord.Visible = true;
  52. }
  53. catch (Exception ex)
  54. {
  55. ErrorString = ex.Message;
  56. MessageBox.Show(ex.Message,MessageBoxIcon.Error);
  57. }
  58. }

错误发生在 odoc.SaveAs 行上,但仅在从 Windows 10 计算机运行时发生。最初,我使用了我机器上的互操作,但后来将其更改为 NuGet 互操作,但这并没有解决问题。我尝试将 Embed Interop Types 更改为 False 但这并没有解决任何问题,因此我将其改回。互操作引用的别名属性是全局的,特定版本属性是 True。由于富文本,我担心更改文档编写器的类型。应用程序的其余部分对于 Windows 10 用户来说运行良好。有什么想法吗?

解决方法

OpenXML 没有成功,因为它不允许我正确添加标题或导出为 PDF。尽管我非常希望使用 OpenXML,但我最终还是回到了 Word Interop。我能够通过如下设置参考属性来解决这个问题:

嵌入互操作类型 = False 复制本地 = True

现在无论哪个操作系统运行程序,保存都有效。我有上面的部分答案,但忽略了 Copy Local = true 部分。

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

如何解决Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复??

除了一项功能外,我还使用 Wine 成功运行了 Windows 程序。该程序可以设置为在 texlive 发行版中启动 pdflatex,当它启动时,它等待查看结果是否成功,然后复制/移动文件。但是在 Linux 上,我无法安排它像在 Windows 上那样等待 pdflatex 完成,因此过早地复制/移动文件并且 pdflatex 无法找到它们。

有一个对话框可以用来保存任意命令,当我按下应用程序中的 pdflatex 按钮时,该命令将被执行。我将此对话框指向 Windows 上的 C:\texlive\2020\bin\win32\pdflatex.exe 并且它可以工作。除了不等待的问题外,我成功地放置了这个命令,以便在Linux上使用wine运行pdflatex。

Z:/usr/bin/gnome-terminal --wait -- /home/nonnull/bin/runlatex/runlatex.sh "%f"

通过将 runlatex.sh 中的最后一个命令设为 exec /bin/bash,终端保持打开状态,因此我可以看到 pdflatex 的所有输出,并知道它正在使用 runlatex.sh 必须找出的正确文件运行通过将传递给它的 Windows 路径转换为其实际路径。 pdflatex 以各种方式抱怨它在那里创建的文件,然后在运行期间不存在。即使终端是打开的,所以没有完成执行,应用程序抱怨 pdflatex 没有正确完成,甚至在 pdflatex 的输出文本完成向下滚动终端之前。当我省略 exec 时,应用程序的行为不会改变终端立即关闭时的命令 pdflatex 完成。

Wine 是怎么回事,命令在完成运行之前不会保持附加状态?我该怎么办?对可以绕过这个困难的命令或机制有什么建议吗?如果需要的话,我准备编写一个 win32 程序来进行调解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

如何解决MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

事实证明,下面询问的 Docker/Windows 问题的原因是我这边的 Hyper-V 的本地网络问题。所以它与 Windows 和 Linux 上的 Docker 之间的区别无关,也与 MariaDB 没有任何关系。我想删除这个问题,但不鼓励这样做,因为它已经有了答案。


我是 docker 新手,但不是 MysqL 的新手。我想在 Docker 中使用 MariaDB。我在 Windows 10 和 Ubuntu 上都安装了 Docker。

对于 MariaDB 容器,我遵循了此处的描述 https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/,因为它似乎比此更准确:https://hub.docker.com/_/mariadb。

我使用以下方法创建了一个 MariaDB 容器:

docker run --name mariadb -e MysqL_ROOT_PASSWORD=test -d mariadb:latest

“最新”拉取了 MariaDB 服务器 10.5.8。

我确认在 my.cnf 中启用了通过端口 3306 的 tcp 访问

[client-server]
port=3306

从容器内部运行 MysqL 客户端是可行的

docker exec -it MariaDB MysqL -u root -p

从主机运行 MysqL 客户端

MysqL -h 172.17.0.2 -u root -p

适用于我的 Ubuntu 主机,但不适用于我的 Windows 10 主机。在 Windows 上,该命令会在一段时间后返回,没有任何消息。

你能告诉我原因并帮助我吗?

解决方法

更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=test -d mariadb:latest --port 3306:3306

在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址

打开powershell并执行ifconfig命令,然后找到WSL网络适配器:

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::e96c:c3d6:464e:2a3b%72
   IPv4 Address. . . . . . . . . . . : 172.20.240.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :

您的 Windows IP 是 172.20.240.1

现在使用 ip a 命令找出 Linux 主机 IP,并查看与 Windows 相同网络中的 IP:

5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:ce:28:8e brd ff:ff:ff:ff:ff:ff
    inet 172.20.252.177/20 brd 172.20.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fece:288e/64 scope link
       valid_lft forever preferred_lft forever

从windows连接到linux服务器

mysql -u root -h 172.20.252.177 -P 3306 -p

Linux 上的 Docker 与 Windows 上的对比

在 Linux 上,docker 在您的系统中以本机方式工作。没有适用于 Windows 的官方 docker 版本。这意味着您需要在 Windows(以及 MacOS)中模拟 linux 机器并在那里运行 docker 守护进程。

当您模拟 linux 时,虚拟机管理程序会为您的模拟系统创建新网络,因此 docker 不在本地主机上运行。

作为用户的主要区别在于,您无法像 localhost 一样访问在 docker 中运行的应用程序,因为它运行在具有自己网络 IP 的 VM 中。

另一个区别是资源可用性。 在 linux docker deamon 可以访问您的所有资源(CPU、内存、硬盘、网络等)。当然,您可以为其创建配额,但目前不关心。

在 Windows 中,您运行 VM 并将一些有限的资源分配给模拟的 Linux。例如 20 GB 硬盘、1vCPU 和 2GB 内存。这对于您的应用程序的性能很重要。它们在 Windows 中会比在 Linux 中慢(如果需要更多资源)。

但是当我在 Windows 上工作时。我喜欢它,因为我可以创建 docker VM 的快照,并且可以将其复制到另一台计算机。这很神奇,因为您在安装或更换计算机时无需配置系统。

关于windows vagrant共享目录设置问题vagrant win10的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比的相关知识,请在本站寻找。

本文标签: