Vagrant (docker provider) ищет локальный docker в $PATH, даже если vagrantfile присутствует

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

так я делаю бродячий файл в корне:

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 }' | xargs kill"
end

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

беда, когда я делаю

 $ vagrant up --provider=docker

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

приведение машины "приложение" с поставщиком "докер"... Исполняемый файл
'docker' Бродяга пытается бежать не был найден в переменной PATH.
Это является ошибкой. Убедитесь, что данное программное обеспечение установлено и
путь.

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

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

редактировать: приведенный выше пример немного сложнее, чем необходимо, чтобы проверить проблему. Я вообще не могу использовать поставщик 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
    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.
3
задан grm
20.12.2022 7:10 Количество просмотров материала 2650
Распечатать страницу

1 ответ

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

вы все равно можете заставить его:

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

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

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

3
отвечен tmatilai 2022-12-21 14:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх