我想在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
中输入。有一些选项可以解决此问题:
要使用选项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
),则可以运行镜像而不会出现任何问题。