Предоставление Vagrant с Docker

Я хочу запустить образ докера на машине Vagrant. Мой Vagrantfile перенаправляется:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.synced_folder "./project/", "/project/"
  config.vm.network "forwarded_port", guest: 8000, host: 8000
  config.vm.network :public_network, bridge: 'eth0'

  config.vm.provision "docker" do |d|
    d.run 'ldap', image: '10.5.6.19:5000/ldap'
  end

end


У меня есть этот образ на моей машине:

>sudo docker images 

REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

10.5.6.19:5000/ldap   latest              ef7f4dcecd65        3 months ago        930.8 MB

но когда я пытаюсь подготовить машину с помощью vagrant provision. Я получаю ошибку: Stdout из команды:

Stderr из команды:

stdin: is not a tty
Unable to find image '10.5.6.19:5000/ldap:latest' locally
time="2014-12-30T13:50:37Z" level="fatal" msg="Error: Invalid registry endpoint https://10.14.6.19:5000/v1/: Get https://10.14.6.19:5000/v1/_ping: dial tcp 10.14.6.19:5000: i/o timeout. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 10.14.6.19:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/10.14.6.19:5000/ca.crt"

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


person kharandziuk    schedule 30.12.2014    source источник
comment
Вы можете запустить и запустить докер 10.5.6.19:5000/ldap вручную? название изображения выглядит странно   -  person BMW    schedule 31.12.2014
comment
мой ответ сработал для вас? Если да, не могли бы вы выбрать это в качестве ответа?   -  person nuaavee    schedule 19.03.2016


Ответы (2)


Вам нужно добавить следующее в /etc/default/docker:

DOCKER_OPTS="--insecure-registry 10.14.6.19:5000"

Кстати, это идет в EXTRA_ARGS в /var/lib/boot2docker/profile, если вы использовали boot2docker.

Есть несколько вариантов, чтобы исправить это:

  1. После запуска виртуальной машины добавьте эту строку вручную. Затем перезапустите виртуальную машину.
  2. Создайте коробку, в которой уже есть указанный выше набор конфигураций, и используйте ее в своем Vagrantfile.
  3. Используйте средство подготовки оболочки, чтобы настроить эту конфигурацию.

Чтобы использовать вариант 3, включите его перед поставщиком докеров:

  config.vm.provision "shell",
    inline: <<-EOS
      echo 'DOCKER_OPTS="--insecure-registry 10.14.6.19:5000 ${DOCKER_OPTS}"' \
        >> /etc/default/docker
  EOS

После этого, если вы выполните vagrant up (или vagrant reload --provision, если виртуальная машина уже запущена), вы сможете без проблем запустить свой образ.

person nuaavee    schedule 26.03.2015
comment
Спасибо за ответ! На самом деле я не могу проверить это, потому что я теряю контекст. - person kharandziuk; 19.03.2016

Подготовка с помощью докера означает, что vagrant будет управлять виртуальной машиной, предоставляя ей докер и предоставленные вами команды. Это будет машина, отличная от вашего хоста, с другим докером и независимой загрузкой образов. Чтобы получить изображение внутри бродяги, нужно выполнить те же действия, которые вы выполняли на своем хосте, чтобы получить это изображение в первую очередь, или поделиться изображением через докер-хаб.

Если вы можете запускать docker изначально (то есть вы работаете в Linux), вы можете в качестве альтернативы рассмотреть возможность использования docker как бродячий провайдер. Я предполагаю, что в этом случае вы будете использовать докер хоста и, следовательно, получите доступ к его изображениям.

person Mykola Gurov    schedule 01.01.2015