"rsync" 未检测到安装在您的来宾计算机中

"rsync" was not detected as installed in your guest machine

我正在尝试使用 docker 设置 Vagrant 作为提供者,但是当 运行

vagrant up --provider=docker --debug 

我收到这个错误:

"rsync" was not detected as installed in your guest machine. This is required for rsync synced folders to work. In addition to this, Vagrant doesn't know how to automatically install rsync for your machine, so you must do this manually.

完整日志在这里: http://pastebin.com/zCTSqibM

Vagrantfile

require 'yaml'

Vagrant.configure("2") do |config|

  user_config = YAML.load_file 'user_config.yml'

  config.vm.provider "docker" do |d|
    d.build_dir = "."
    d.has_ssh = true
    d.ports = user_config['port_mapping']
    d.create_args = ["--dns=127.0.0.1","--dns=8.8.8.8", "--dns=8.8.4.4"]
    d.build_args = ['--no-cache=true']   end

  config.vm.hostname = "dev"

  config.ssh.username = "it"   config.ssh.port = 22   config.ssh.private_key_path = ["./initial_ssh_key", user_config['ssh_private_key_path']]   config.ssh.forward_agent = true

end 

Dockerfile

FROM debian:jessie MAINTAINER IT <it@email.com>

RUN echo 'exit 0' > /usr/sbin/policy-rc.d

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

RUN apt-get update RUN apt-get upgrade -y RUN apt-get install sudo apt-utils -y

RUN apt-get -y install sysvinit-core sysvinit sysvinit-utils RUN cp /usr/share/sysvinit/inittab /etc/inittab RUN apt-get remove -y --purge
--auto-remove systemd libpam-systemd systemd-sysv

RUN apt-get install ssh -y

RUN addgroup --system it RUN adduser --system --disabled-password
--uid 1000 --shell /bin/bash --home /home/it it RUN adduser it it RUN adduser it sudo

RUN echo "it ALL=(ALL)  NOPASSWD: ALL" >> /etc/sudoers

ADD initial_ssh_key.pub /home/it/.ssh/authorized_keys RUN chown it:it /home/it/ -R RUN echo "Host * \n\tStrictHostKeyChecking no" >> /etc/ssh/ssh_config

CMD exec /sbin/init

注: 我在 Mac OS X 10.12 上安装了 vagrant、virtualbox 和 docker 我安装了 rsync 并添加到我的 PATH 中主机。 此外,相同的 vagrant 和 docker 配置在 ubuntu 主机上完美运行。

如何在客户机上安装 rsync?还是我的配置有其他问题?有什么想法吗?

尝试将 rsync 添加到您的 Docker 文件中,在您的 apt-get 行之一的某处。 Linux 主机默认使用 NFS,这就是它在您的 Ubuntu 上运行的原因。

通常 Vagrant 会尝试在访客计算机上安装 rsync,如果失败 - 它会通过错误消息通知您。有关 vagrant website 的更多信息("Prerequisites" 章中的第 3 段)

您可能想试试 替代 boot2docker 盒子https://github.com/dduportal/boot2docker-vagrant-box 因为它 包含 rsync 而默认使用的 hashicorp/boot2docker 似乎没有这个!

如果这样做,您必须将 follwong 行添加到您的 docker 提供程序配置(当然采用您的系统):

d.vagrant_vagrantfile = "../path/to/Vagrantfile"

这是因为您要按照 vagrant docker provider documentation 中所述更改 docker 提供商主机虚拟机。