无法在Vagrant上使用版本2 docker-compose文件

时间:2016-10-10 19:02:19

标签: linux docker vagrant docker-compose

我遇到了一个令人困惑的问题。

我不能在流浪客人身上使用docker-compose版本2文件。 (如果重要的是主持人是15.10 ubuntu)。

我收到以下错误: Docker Engine低于Compose所需的最低要求。您当前的项目需要版本为1.10.0或更高版本的Docker Engine

我使用的Vagrantfile如下:

# -*- mode: ruby -*-
# vi: set ft=ruby :
# SET THE IP ADDRESS AND BRIDGE SELECTION TO MATCH YOUR NETWORK
#

unless Vagrant.has_plugin?("vagrant-docker-compose")
  system("vagrant plugin install vagrant-docker-compose")
  system("vagrant plugin install vagrant-vbguest")
  puts "Dependencies installed, please try the command again."
  exit
end
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.synced_folder "./web", "/var/www", create: true, group: "www-data", owner: "www-data"
  config.vm.provision :shell, path: "./provision/setup.sh"
  config.vm.provision "shell", inline:
     "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"
  config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
  # Assign a name to your host VM
  config.vm.hostname = "docker"
  # Use the phusion ubuntu box for our host VM
  config.vm.box = "phusion/ubuntu-14.04-amd64"
  # Run scripts to place web, docker and repo files
  config.vm.provision :shell, path: "./provision/public_gitrepos_to_vagrant_dir.sh"

  # Forward port 8080 to host machine
  config.vm.network "forwarded_port", guest: 80, host: 8081
  config.vm.network "forwarded_port", guest: 443, host: 8082
  config.vm.network "forwarded_port", guest: 8000, host:8000
  #network
  config.vm.network "public_network", ip: "192.168.0.60"

  # Sync your project in the /vagrant directory inside the VM
  config.vm.synced_folder ".", "/vagrant"

  config.vm.provision :docker
  config.vm.provision :docker_compose, yml: "/vagrant/docker/docker-compose.yml", rebuild: true, run: "always"
  config.vm.provision :shell, path: "./provision/dockerstart.sh"
  end

Docker-compose与V1版本的YAML文件一起正常工作,但是给了我警告并且失败了V2。 V2在主机上工作正常,只有在Vagrant上才有这个问题。

如何让V2 docker-compose文件与Vagrant一​​起使用?我只是遗漏了什么,或者这是一个更大的问题?

1 个答案:

答案 0 :(得分:2)

问题

旧Docker版本

在该Vagrant VM上运行的Docker安装已过时且已过时。根据您看到的错误,它早于Docker Compose v2所需的最小1.10.0

  

我收到以下错误:Docker Engine低于Compose所需的最小值。您当前的项目需要版本为1.10.0或更高版本的Docker Engine

以下是您下载的框的来源:

https://oss-binaries.phusionpassenger.com/vagrant/boxes/

Phusion page之后,通过“预建箱”链接到上面的链接。您可以在 2014年5月中查看他们上次更新的日期,这是Docker时间中永远存在的日期。

根据Docker Compose文档: https://docs.docker.com/compose/compose-file/#/version-2

  

Compose 1.6.0+支持版本2文件,并且需要版本为1.10.0 +的Docker Engine。

解决方案

Ubuntu主机上的本地Docker

当您在主机上运行Ubuntu时,您可以直接运行本机Docker。使用它比在VM中更快更简单。

在Ubuntu上安装:https://docs.docker.com/engine/installation/linux/ubuntulinux/

Vagrant Docker Provider

如果您的要求是在Vagrant中运行,您可以使用Vagrant的内置Docker提供程序来管理它,而不使用VM / VBox: https://www.vagrantup.com/docs/docker/boxes.html

  

Docker提供程序不需要Vagrant框。 config.vm.box设置是完全可选的。

注意:为此,您需要在Ubuntu主机上安装Docker。