我正在尝试利用Vagrant
1.6的Docker提供程序,但似乎遇到了麻烦。我可以成功启动Docker容器和来宾操作系统,但随后无法从主机OS访问容器中已启动的服务。这是我的Vagrantfile:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :forwarded_port, guest: 8000, host: 8000
config.vm.define "icecast" do |v|
v.vm.provider "docker" do |d|
d.image = "moul/icecast"
d.ports = ["8000:8000"]
d.env = {
# SOURCE_PASSWORD: 'password',
ADMIN_PASSWORD: 'password',
# PASSWORD: 'password',
# RELAY_PASSWORD: 'password'
}
end
end
end
我的理解是,vagrant up --provider=docker
在OS
X上运行将启动运行boot2docker的VM,然后再运行我的容器。运行vagrant docker- logs
似乎可以确认我的容器已创建并且服务已启动,但是现在我一生无法弄清楚如何从OS
X主机访问该服务。如果我使用的是标准VirtualBox提供程序,则我希望该config.vm.network :forwarded_port
指令可以处理转发,但是添加该指令似乎没有任何区别。
为了能够从OS X主机访问此服务,我需要做什么?
更新 :作为参考,这是映像的Dockerfile:https : //github.com/moul/docker-
icecast/blob/master/Dockerfile
好的,所以我终于弄清楚了,事实证明,解决方案是完全不使用boot2docker。根据我在Vagrant来源中进行的深入研究,阅读问题以及重新观看Docker提供程序的介绍视频,事实证明,您需要使用代理VM来托管容器,而不是boot2docker。
为了进行此设置,我修改了Vagrantfile使其包含以下配置选项vagrant_vagrantfile
:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "icecast" do |v|
v.vm.provider "docker" do |d|
d.image = "moul/icecast"
d.ports = ["8000:8000"]
d.env = {
# SOURCE_PASSWORD: 'password',
ADMIN_PASSWORD: 'password',
# PASSWORD: 'password',
# RELAY_PASSWORD: 'password'
}
d.vagrant_vagrantfile = "./Vagrantfile.proxy"
end
end
end
然后,我添加了一个附加文件(Vagrantfile.proxy),Vagrant将使用该文件来启动代理VM:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "docker"
config.vm.provision "shell", inline:
"ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"
config.vm.network :forwarded_port, guest: 8000, host: 8000
end
使用Docker
Provisioner将自动为您在代理VM上安装Docker。内联外壳脚本会强制Vagrant重新登录到该框,以便它在安装Docker后可以使用Docker。最后,我转发了该Vagrantfile中所需的端口,而不是原始端口(同时仍在原始端口中使用ports
config选项)。
就像默认的boot2docker策略一样,Vagrant将足够聪明,可以将代理VM的现有实例重用于任何使用它的映像。
希望这对以后的人会有所帮助。
我正在使用Spring Security 4.0.1,并希望使用多个身份验证提供程序使用基于Java的配置进行身份验证。如何指定提供程序顺序? 我希望使用AuthenticationManagerBuilder,因为这就是<code>WebSecurityConfigurerAdapter。configureGlobal()公开,但我看不到任何指定顺序的方法。我需要手动创建ProviderMana
本文向大家介绍postgresql 使用Npgsql提供程序从.NET访问Postgresql,包括了postgresql 使用Npgsql提供程序从.NET访问Postgresql的使用技巧和注意事项,需要的朋友参考一下 示例 Npgsql是Postgresql最受欢迎的.NET提供程序之一,它ADO.NET兼容并且与其他.NET数据库提供程序几乎相同地使用。 典型的查询是通过创建命令,绑定参数
我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?
本文向大家介绍F# 使用CSV类型提供程序,包括了F# 使用CSV类型提供程序的使用技巧和注意事项,需要的朋友参考一下 示例 给定以下CSV文件: 您可以使用以下脚本读取数据:
我正在尝试使用pact来验证spring boot微服务。我已经从consumer生成了pact文件,并在provider端使用pact Broker验证了它。 我有另一个用例,在根据实际的服务响应验证pact文件之前,我需要执行一些代码。我读过关于状态改变URL和状态改变与闭包来实现它,但没有得到一个如何实现这一点的例子。有人能帮忙吗? 如果这个客户不存在,那么我将需要通过读取pact文件中的更
我已经在文件中添加了所有相关build.gradle依赖项。尽管如此,当我尝试运行调用SOAP服务时,还是会出现以下错误。共享依赖项部分和错误详细信息。使用Java11。网上已经有很多答案,但似乎都不起作用。任何帮助/建议将是值得赞赏的。 低于错误跟踪