【问题】VirtualBox和Vmware中宿主机挂载文件夹到虚拟机有什么不同?

本文记录了一位开发者在使用VirtualBox和Docker搭建开发环境时遇到的共享文件夹导致的JS文件乱码问题,并详细描述了问题排查过程及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了可追溯,我把question提取出来整理成文章,方便自己以后对问题进行追溯。

我之前一直是Docker ToolBox套装做的docker学习环境,后面直接使用compose构建了许多开发环境和单机生产环境,但是出现过很多莫名其妙的问题。

VirtualBox 使用Boot2Docker共享文件夹开发,js修改后尾部出现一串乱码(和nginx容器都没关系)

Docker-compose.yml

version:  '3.0'
services:
##基础环境
  nginx:
    image: nginx:1.13.3
    volumes:
      - /etc/localtime:/etc/localtime:ro
#网站目录
      - ./app:/var/www/html
      - ./dockerfiles/nginx/conf.d:/etc/nginx/conf.d:ro
#日志文件
      - ./logs/nginx:/var/log/nginx
    links:
      - "php-fpm:php-fpm"
    ports:
      - "80:80"
    command: nginx -g 'daemon off;'

  mysql-db:
    image: mysql:5.5
#很重要导入到处数据
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data/mysql:/var/lib/mysql:rw
      - ./logs/mysql:/var/lib/mysql-logs:rw
      - ./dockerfiles/mysql/conf.d:/etc/mysql/conf.d:ro
    environment:
        MYSQL_ROOT_PASSWORD: zhaojun
        MYSQL_DATABASE: lottery_api_sale
        MYSQL_USER: zhaojun
        MYSQL_PASSWORD: zhaojun
    ports:
      - "3306:3306"
    deploy:
      restart_policy:
        condition: any
  redis-db:
    image: redis
    volumes:
      - ./data/redis:/data
      - /etc/localtime:/etc/localtime:ro
    deploy:
      restart_policy:
        condition: any
  php-fpm:
    build: ./dockerfiles/php/
    restart: always
    environment:
      TP_APP_DEBUG: 'true'
    volumes:
#网站目录
      - ./app:/var/www/html:rw
#配置文件
      - ./dockerfiles/php/php.ini:/usr/local/etc/php/php.ini:ro
      - ./dockerfiles/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro
#挂载站点日志
      - ./logs/php-fpm:/var/log/php-fpm:rw
    depends_on:
      - mysql-db
      - redis-db
    links:
      - mysql-db:mysql-db
      - redis-db:redis-db
    command: php-fpm

##附加扩展安装器
  composer:
    image: composer:1.4.2
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./app:/app:rw
    working_dir: /app/webroot
    deploy:
      restart_policy:
        condition: none
    command: composer install
  bower:
    image: digitallyseamless/nodejs-bower-grunt
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./app:/app:rw
    working_dir: /app/webroot
    deploy:
      restart_policy:
        condition: none
    command: bower install

VirtualBox中修改Js后访问

clipboard.png

clipboard.png

在webroot/public有一个测试文件

clipboard.png

第一次访问,没问题

clipboard.png

在修改了index.js后访问出现乱码

clipboard.png

clipboard.png

clipboard.png

1.开始以为是nginx原因,换了很多版本测试排除了nginx原因。

2.后面以为是boot2docker原因,又排查了版本,最后切换vBox的一个ubuntu做共享文件夹测试,都是同样一模一样的问题。

3.ubuntu在Vbox中一模样的效果
clipboard.png

最后我开始排查虚拟器,在换了vmware后,此问题就消失了,同样使用的是两个这虚拟机的挂载。

clipboard.png

所以排查出来的情况就是Virtualbox和Vmware挂载共享文件的不同造成的,就来请假一下他们有什么不同???
(在我修改了我windows下共享目录的文件后,不管是Virtualbox和vmware里面还是两个虚拟器的操作系统里面docker容器里面得文件都是修改了的vim也能看到)

在virtualbox中的ubuntu中直接vim或者phpstorm修改文件,不会出现这个问题,所以最终就是确定了virtual虚拟机共享文件问题。

2017.07.26 我使用同事PC机器遇到同样的问题。

clipboard.png

<think>好的,我现在需要帮助用户解决在VMwareVirtualBox中将主机文件传输到Kali Linux虚拟机问题。首先,我得回忆一下这两种虚拟化平台的文件共享方法。对于VirtualBox,我记得共享文件夹需要安装增强功能。用户可能已经安装了Kali Linux,但如果没有安装增强功能,共享文件夹可能无法正常工作。步骤应该是先挂载增强功能的ISO,然后在虚拟机内安装。之后,在VirtualBox的设置中添加共享文件夹,指定路径自动挂载选项。然后在虚拟机中,需要挂载到某个目录,比如/media/sf_shared,并且用户可能需要加入vboxsf组才能访问。可能需要提醒用户注意权限问题,以及如何将用户添加到组里,比如使用usermod命令。然后是VMware的情况。VMware Tools类似,安装后可以启用共享文件夹。在虚拟机设置里定义共享文件夹,同样可能需要重启。挂载点通常在/mnt/hgfs/下。拖放功能可能需要检查VMware Tools是否安装正确,并且虚拟机的设置里是否启用了拖放复制粘贴功能。可能还需要提到需要客户机操作系统的支持,比如Kali是否有必要的软件包。另外,用户可能还关心其他方法,比如使用SSH或SCP传输文件。这需要虚拟机有网络连接,并且SSH服务正在运行。可能需要指导用户在Kali中安装openssh-server,配置IP地址,然后从主机使用scp命令或者FileZilla之类的工具传输。还要考虑用户可能遇到的问题,比如权限不足,共享文件夹未显示,或者增强功能安装失败。可能需要提醒常见故障排除步骤,比如检查安装日志,确保内核头文件已安装,或者尝试手动挂载。最后,生成相关问题的时候,要涵盖不同方面,比如权限问题、替代方法、安装增强功能失败的处理,以及网络传输的其他方式。确保问题覆盖用户可能进一步的需求。</think>### 如何在VMware/VirtualBox中传输文件到Kali Linux虚拟机 #### 一、VirtualBox环境方法 1. **共享文件夹配置** - 安装增强功能:启动Kali后选择菜单栏的`设备 > 安装增强功能`,挂载虚拟光盘后执行: ```bash sudo apt update && sudo apt install build-essential dkms linux-headers-$(uname -r) sudo sh /media/cdrom/VBoxLinuxAdditions.run ``` - 设置共享文件夹:关闭虚拟机后,在VirtualBox管理器选择`设置 > 共享文件夹`,添加主机目录并勾选`自动挂载``固定分配`[^1] - 访问路径:重启后共享文件夹默认挂载在`/media/sf_共享文件夹名`,需将用户加入`vboxsf`组: ```bash sudo usermod -aG vboxsf $USER ``` 2. **拖放文件(需双向支持)** - 在虚拟机设置中启用`设备 > 共享粘贴板/拖放 > 双向` - 直接拖拽文件到虚拟机窗口(需要增强功能已正确安装) #### 二、VMware环境方法 1. **共享文件夹配置** - 安装VMware Tools:选择`虚拟机 > 安装VMware Tools`,挂载ISO后解压安装包: ```bash sudo apt install open-vm-tools-desktop ``` - 创建共享文件夹:在虚拟机设置中添加主机目录,重启后访问`/mnt/hgfs/共享文件夹名` 2. **拖放/复制粘贴** - 在虚拟机设置中启用`选项 > 客户机隔离 > 启用拖放复制粘贴` - 直接拖拽文件或使用`Ctrl+C/Ctrl+V`传输文本 #### 三、通用替代方案 1. **SCP/SFTP传输** - 在Kali中启动SSH服务: ```bash sudo systemctl start ssh ``` - 从主机执行命令传输: ```bash scp 文件路径 kali用户名@虚拟机IP:目标路径 ``` 2. **USB设备直通** - 插入U盘后,在虚拟机菜单选择`设备 > USB设备 > 选择对应设备`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值