vagrant - Docker的 Vagrant 供应

标签 vagrant docker vagrantfile

我想在Vagrant机器上运行docker镜像。
我的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设置机器时。我遇到一个错误:
命令的标准输出:

从命令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"

我认为发生这种情况是因为我应该对图像使用某种注册表。有没有一种方法可以使用本地镜像进行无用资源配置?

最佳答案

您需要在/etc/default/docker中添加以下内容:

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

附带说明一下,如果您使用的是boot2docker,则在EXTRA_ARGS中的/var/lib/boot2docker/profile中输入。

有一些选项可以解决此问题:
  • 虚拟机启动后,手动添加该行。然后重启虚拟机。
  • 建立一个已经设置了上述配置的盒子,并在您的Vagrantfile中使用它
  • 使用shell配置器设置该配置。

  • 要使用选项3,请在docker Provisioner之前添加此选项:
      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),则可以运行镜像而不会出现任何问题。

    关于vagrant - Docker的 Vagrant 供应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27706724/

    相关文章:

    docker - docker 背后的基本原理撰写 “links”命令

    vagrant - 运行 "VBOX_E_FILE_ERROR"命令时为 "vagrant up"

    Vagrant - 通过浏览器访问而没有 url 端口?

    MySQL 不接受远程连接

    多个容器之间的 Docker 命名卷

    docker - 即使运行新的容器镜像后,docker容器也使用相同的卷

    ubuntu - Vagrant 与 ubuntu 16.04

    github - 在 vagrant 中创建的哪些文件夹或文件不应推送到 GitHub 上的存储库中

    vagrant - 适用于 OS X 和 Windows 的单个 Vagrantfile

    ruby - 如何在没有无效选项警告的情况下为 Vagrant 实现自定义选项?