首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与码头和空壳供应商的奇怪的空域错误

与码头和空壳供应商的奇怪的空域错误
EN

Stack Overflow用户
提问于 2014-03-27 08:56:37
回答 1查看 1.5K关注 0票数 0

我有下面的Vagrantfile

代码语言:javascript
复制
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

当我运行这个程序时

代码语言:javascript
复制
$ vagrant up --provider=vmware_fusion

这很好:创建了虚拟机,安装了Docker,并设置了MongoDB和RabbitMQ,并相应地分配了密码。到目前为止一切都很好。

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

代码语言:javascript
复制
==> 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自动应用于docker run调用的参数docker run

我不明白为什么只有在添加shell提供程序(这显然与设置Docker或Docker容器无关)时才会发生这种情况。

有人知道这是为什么吗?

我在OSX10.9.2上使用Vagrant1.5.1(Vagrane1.5.1)、VagraneVagraneFusionProvider2.3.4和VMWare 6.0.2。

有没有人知道什么会导致这个问题,以及如何解决这个问题?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 11:10:44

码头工人抱怨是因为单一的-而不是双--。检查医生们以获得指定它们的新方法。

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

代码语言:javascript
复制
docker run --cidfile=/var/lib/vagrant/cids/1bef9ddec8969e37432fbe8c55f6d9452cd61e4a -d --name="tutum/mongodb" -p 27017:27017 -e MONGODB_PASS="admin" tutum/mongodb

但是,要想在流浪汉中解决这个问题,就需要更新核心提供程序代码。

更新

在1.5.2版本中已经修正了这个问题,看看此承诺,他们现在似乎在使用--name--cidfile

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22682541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档