使用Docker提供流动服务

时间:2014-12-30 13:54:59

标签: 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"

我认为这是因为我应该使用某种注册表来存储图像。有没有办法使用本地图像进行流浪汉配置?

2 个答案:

答案 0 :(得分:2)

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

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

另外,如果您使用的是boot2docker,则EXTRA_ARGS位于/var/lib/boot2docker/profile

有几个选项可供选择以解决此问题:

  1. VM启动后,手动添加该行。然后重新启动VM。
  2. 构建一个已具有上述配置集的框并在Vagrantfile中使用该框
  3. 使用设置配置的shell配置程序。
  4. 要使用选项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以防vm已经运行),那么您将能够毫无问题地运行您的图像。

答案 1 :(得分:1)

使用docker进行配置意味着vagrant将通过使用docker和您提供的命令配置VM来管理VM。这将是与主机不同的机器,具有不同的泊坞窗和独立的图像拉动。将图像放入流浪者的方法是执行与您在主机上执行的操作相同的操作,以便首先获取该图像,或通过docker hub共享图像。

如果您可以本地运行docker(意味着您使用的是Linux),您可以考虑使用docker as vagrant provider。我想在这种情况下你将使用主机的docker,因此可以访问它的图像。