2

Я использую рабочий стол linux с ядром 3.2 (Ubuntu 12.04) и хотел бы протестировать его с помощью провайдера / инициализации vagrants docker.

Поэтому я делаю Vagrantfile в корне:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "app" do |v|
    v.vm.provider "docker" do |d|
      d.cmd     = ["/sbin/my_init", "--enable-insecure-key"]
      d.image   = "phusion/baseimage"
      d.has_ssh = true
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
    end

    v.ssh.username = "root"
    v.ssh.private_key_path = "phusion.key"
  end
end

Контейнеры vagrantfile (./docker/Vagrantfile) выглядят так:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"
  config.vm.provision "docker"
  config.vm.provision "shell", inline:
    "ps aux |grep 'sshd:' | awk '{print $2}' | xargs kill"
end

(на самом деле эти файлы из поста в блоге)

Беда в том, когда я делаю

 $ vagrant up --provider=docker

Я получаю следующую ошибку:

Приведение машины app к провайдеру Docker ... Исполняемый файл 'docker', который пытается запустить Vagrant, не найден в переменной PATH. Это ошибка Пожалуйста, убедитесь, что это программное обеспечение установлено и находится в пути.

Я скорее ожидал, что он запустит экземпляр virtualbox с ./docker/Vagrantfile, образом Precision64, предоставленным для Docker, и что не будет необходимости иметь локально установленный Docker (что невозможно, потому что я на 3.2)?

Если кто-то может воспроизвести это или заметить очевидную ошибку, я был бы признателен за комментарий или ответ. Спасибо!

Отредактировано: приведенный выше пример немного сложнее, чем нужно, чтобы проверить проблему. Я вообще не могу использовать провайдера докеров, поэтому я подозреваю, что это бродячая ошибка, если здесь явно не что-то не так.

Более простой способ воспроизвести с помощью этого Vagrantfile:

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "app" do |v|
    v.vm.provider "docker" do |d|
      d.cmd     = ["/sbin/my_init", "--enable-insecure-key"]
      d.image   = "phusion/baseimage"
      d.has_ssh = true
    end

    v.ssh.username = "root"
    v.ssh.private_key_path = "phusion.key"
  end
end

Когда я пытаюсь использовать это:

$ uname -a
Linux ubuntu1204 3.2.0-64-generic #97-Ubuntu SMP Wed Jun 4 22:04:21 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ vagrant up --provider=docker
Bringing machine 'app' up with 'docker' provider...
The executable 'docker' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.

1 ответ1

3

Поскольку вы используете Vagrant в Linux, «прокси-виртуальная машина» по умолчанию не используется, так как Vagrant предполагает, что докер установлен непосредственно на ваш хост-компьютер.

В любом случае вы можете заставить его:

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.force_host_vm = true
    # ...
  end
end

На прокси-виртуальной машине , которую вы можете указать с помощью d.vagrant_vagrantfile , должен быть установлен Docker . Конечно, вы можете установить его с помощью поставщика (в вашем случае - ./docker/Vagrantfile). В большинстве случаев по умолчанию достаточно коробки boot2docker.

Актуальную документацию поставщика докеров для последней версии Vagrant можно найти здесь: https://docs.vagrantup.com/v2/docker/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .