奇怪的stream浪汉错误与Docker和shell供应商

我有以下Vagrantfile

 VAGRANTFILE_API_VERSION = "2" $script = <<SCRIPT apt-get install -y mongodb mongo dummydb -u admin -p admin --eval "db.addUser('dummyuser', 'dummypass')" SCRIPT Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64_vmware_fusion.box" # MongoDB ports config.vm.network "forwarded_port", guest: 27017, host: 27017 # RabbitMQ ports config.vm.network "forwarded_port", guest: 5672, host: 5672 config.vm.network "forwarded_port", guest: 55672, host: 55672 config.vm.provision "docker" do |docker| docker.run "tutum/mongodb", daemonize: true, args: "-p 27017:27017 -e MONGODB_PASS=\"admin\"" docker.run "tutum/rabbitmq", daemonize: true, args: "-p 5672:5672 -p 55672:55672 -e RABBITMQ_PASS=\"admin\"" end # config.vm.provision "shell", inline: $script end 

当我运行这个使用

 $ vagrant up --provider=vmware_fusion 

这完美地工作:虚拟机创build,Docker安装和MongoDB以及RabbitMQ设置和密码相应地分配。 到目前为止,一切都很好。

当我现在取消注释最后一行执行shell提供程序(根据文档 ,应该这样工作),我得到一个非常奇怪的错误:Vagrant安装Docker,拉tutum/mongodb图像,然后告诉我,运行容器失败:

 ==> default: Starting Docker containers... ==> default: -- Container: tutum/mongodb The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! rm -f /var/lib/vagrant/cids/1bef9ddec8969e37432fbe8c55f6d9452cd61e4a docker run -cidfile=/var/lib/vagrant/cids/1bef9ddec8969e37432fbe8c55f6d9452cd61e4a -d -name tutum/mongodb -p 27017:27017 -e MONGODB_PASS="admin" tutum/mongodb Stdout from the command: Stderr from the command: stdin: is not a tty Warning: '-cidfile' is deprecated, it will be replaced by '--cidfile' soon. See usage. Warning: '-name' is deprecated, it will be replaced by '--name' soon. See usage. Unable to find image 'tutum/mongodb' locally Pulling repository tutum/mongodb 2014/03/27 01:31:40 Error: Invalid container name (tutum/mongodb), only [a-zA-Z0-9_.-] are allowed 

我想问题是Vagrant自动应用于-name tutum/mongodb docker run调用的参数-name tutum/mongodb

我不明白的是,为什么只有当我添加shell供应商(这显然与设置Docker或Docker容器无关) 才会发生这种情况。

有人知道这是为什么吗?

我在OS X 10.9.2上使用了Vagrant 1.5.1,Vagrant VMWare Fusion provider 2.3.4和VMWare 6.0.2。

有没有人有一个想法可能会导致这个问题,以及如何解决?

PS:我目前的解决方法是在auto_assign_name: false中应用auto_assign_name: false ,但这只是一个解决方法。 我很好奇真正的问题是什么,以及如何正确解决。

Docker正在抱怨,因为单而不是双 。 检查文档的新方法来指定它们。

要成功运行该命令,请使用

 docker run --cidfile=/var/lib/vagrant/cids/1bef9ddec8969e37432fbe8c55f6d9452cd61e4a -d --name="tutum/mongodb" -p 27017:27017 -e MONGODB_PASS="admin" tutum/mongodb 

但是解决这个问题需要更新核心configuration代码。

更新

这已经在版本1.5.2中被修复了,看起来这个提交看起来--cidfile在使用--name--cidfile