Docker4Windows -- 从外部(非本机host)访问 由docker container运行的程序

背景

当我们在windows 上面运行docker container的时候,我们需要借助于模拟器(例如,Virtual box/Hyper V),她的目的主要是在我们的windows系统上面模拟出一个Linux环境来运行docker engine,从而在实现在windows机器上面跑docker.。通常,我们把这个模拟器称理解为为docker machine。

然而,由此产生了一个问题,那就是相对于Linux,我们在Windows上面跑docker的时候,docker与host之间就多出来了一个中间层(docker machine)。所以,当我们需要在非本机上面访问由container提供的“服务”时,除了expose host/container的端口之外,还需要保证中间层畅通。

设置docker machine

具体的方法很简单,就是通过设置virtual box 的网络配置/转发规则。 具体的步骤如下:

  1. Open Oracle VM VirtualBox Manager

  2. Select the VM used by Docker

  3. Click Settings -> Network

  4. Adapter 1 should (default?) be "Attached to: NAT"

  5. Click Advanced -> Port Forwarding

  6. Add rule: Protocol TCP, Host Port 1521, Guest Port 1521(leave Host IP and Guest IP empty)

貌似有点乱呀,没看懂?没关系!,下面举例说明并配有截图(有真相)

我这里的示例是用docker跑一个oracle server 的container,他运行在一台windows机器上面(Host A),然后我在另一个windows机器(Host B)上面链接oracle server.

1. 我这里省略了部分container 的过程,只列出CLI

$ docker run -itd --name=xxx --network=xxxNet --hostname=xxx  -p 1521:1521 oracledb11g_img:v1 /bin/bash

2. virtual box 中关于网络的配置:

3. 在另外一台机器上通过SQL Deverloper 链接由docker continer创建的数据库

Done!! 证明由docker container 承载的 oracle server 可以被其他机器访问。

时间: 2024-11-05 13:38:27

Docker4Windows -- 从外部(非本机host)访问 由docker container运行的程序的相关文章

vs2010用iis5作为调试服务器从而允许非本机电脑访问项目网站

工作的时候经常遇见这2种情况 1,和设备端的同事调程序,但是他们却不能访问vs自带的web服务器 2,写好的程序在vs中运行一点问题都没有,一发布到iis就问题一大堆 后来在终于有了一个比较好的解决办法:那就是那iis作为vs的调试服务器! 步骤: 1,在vs中设置服务器为iis:项目右键属性-web-使用本地iis web服务器-创建虚拟目录 2,如果提示“...需要集成windows身份验证”,则需要到iis中设置一下 然后就能使用iis作为服务器啦~~

VirtualBox 设置静态ip,实现虚拟机和宿主机互相访问,并能访问网络

虚拟机支持3种常用网络模式: NAT模式,虚拟机可以访问宿主机和网络,宿主机不能访问虚拟机. Host-Only模式,虚拟机和宿主机可以互相访问,但是虚拟机不能访问网络. Bridge模式:虚拟机作为独立的计算,和宿主机同样连接到外部网络.如果局域网中是DHCP,将虚拟机设置为静态ip,存在ip冲突的风险. 为将VirtualBox 设置为静态ip,实现虚拟机和宿主机互相访问,并能访问网络,我们可以将NAT和Host-Olny 模式混合使用,步骤如下: 1.配置2块网卡:一个选择[网络地址转换(

docker 安装redis , 让宿主机可以访问

1, docker 拉去最新版本的redis docker pull redis #后面可以带上tag号, 默认拉取最新版本 2, docker安装redis container 安装之前去定义我们的redis.conf文件, 这一步很重要, redis.conf目录 $PWD/conf/redis.conf 执行命令: wget http://download.redis.io/redis-stable/redis.conf 最好将该目录权限改为当前的user, 执行命令: sudo chow

解决Weblogic 本机可以访问控制台,网络IP访问不了

解决Weblogic 本机可以访问控制台,网络IP访问不了 解决方法:英文版:1.通过 http://localhost:7001/console/ 登录WebLogic的管理控制台Lock & EditDomain Structure ==> Environment ==> Servers右边选择相应的Server,打开进行编辑,在Listen Address:中填入0.0.0.0,保存即可.最后在原来Lock & Edit的地方点击Activate Changes激活所做的

linux下配置SuperMap(非本机)许可服务器的ip

在Linux下配置许可到指定许可服务器(非本机),需要做以下操作: 1.前提:开通linux客户机和许可服务器之间的1947端口(TCP协议),可通过如下方法验证端口是否开通: 1)在linux客户机上运行 ping 许可服务器IP 2)在linux客户机上运行 telnet 许可服务器IP 1947 2.停止linux客户机许可服务:进入etc/init.d 目录,运行 sh aksusbd stop 3.修改linux客户机许可配置到指定许可服务器:把  /etc/hasplm下的haspi

ARM 非对齐的数据访问操作

I’m confused about unaligned memory accesses on ARM. My understanding was that they’re not allowed — that is, dereferencing a 32-bit value from a pointer that’s not four-byte aligned will crash. I’ve run into such crashes before. But right now I’ve g

合约机和非合约机是什么意思

合约机就是你要每月消费多少钱或者固定什么卡. 合约机是指通讯运营商与手机生产商合伙定制的手机类型,用户使用该手机必须和指定运营商签约,而且要一次性交清租机款(大多以存话费的名义交清).合约机是指通讯运营商与手机生产商合伙定制的手机类型,合约机不能换卡,换卡锁机,换机锁卡.还得交违约金.但合约机比裸机有好处,合约机一定是行货,别的就不好说了. 相对而言,非合约机(裸机)比较受用户的欢迎,因为合约机一般会安装一些无用的固话软件,拖慢系统,而非合约机不仅没有这类软件的困扰,而且开机也不会显示通讯运营商

生成一个ipa的包,使非开发机也能安装成功 (Xcode5.1)

for example: 想为com.mophie.space.cloud的bundle identifier生成一个非开发机也能安装的ipa包.你需要一个apple的企业账号(apple有两种账号:开发者账号和企业账号.开发者账号生成的distribution ipa包,是上传到app store的.企业账号生成的in house 的ipa包,是放在某个公司的网站上安装的.Ad Hoc的包主要方便测试用的,在打包前需要将设备id添加进去.)以下事情都是在apple develop网站上做的.

解决宿主机不能访问虚拟机CentOS中的站点 | 更新CentOS防火墙设置开启80端口访问

前阵子在虚拟机上装好了centos6.0,并配好了nginx+php+mysql,但是本机就是无法访问.一直就没去折腾了. 具体情况如下 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web 4.本机无法访问虚拟己的web 后来发现是防火墙将80端口屏蔽了的缘故. 检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试. 1>.解决方法如下: 1 /sbin/iptables -I INPUT -p tcp --dp