使用Docker的stream浪汉服务

我想在Vagrant机器上运行一个docker镜像。 我的stream浪文件正在前进:

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:

斯德哥尔从命令:

 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" 

我认为这是因为我应该使用某种registry的图像。 有没有办法使用本地图像进行stream浪者configuration?

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

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

在附注中,如果您使用的是boot2docker, EXTRA_ARGS/var/lib/boot2docker/profile中的EXTRA_ARGS中出现。

有几个选项可以select来解决这个问题:

  1. 一旦虚拟机启动,手动添加该行。 然后重新启动虚拟机。
  2. build立一个已经具有上述configuration集的盒子,并在你的Vagrantfile中使用
  3. 使用一个shellconfiguration器设置该configuration。

要使用选项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已经运行的情况下提供configuration),你将能够运行你的镜像而没有任何问题。

使用docker进行configuration意味着vagrant将通过configurationdocker和您提供的命令来pipe理VM。 这将是一个不同的机器比你的主机不同的docker和独立的图像拉。 让你的图像进入stream浪者的方式将是执行您在主机上执行的相同操作,以便首先获取该图像,或者通过docker中心共享图像。

如果你可以本地运行docker(意思是你在linux上),你也可以考虑使用docker作为stream浪者提供者 。 我想在这种情况下,你将使用主机的docker,因此将获得访问它的图像。