当我在一台docker主机上为同一个web映像启动两个docker容器时。
5000
5000
映射到docker主机的不同端口:49155
,49156
49155
或49156
是否有一种解决方案可以通过ip和端口从docker主机外部访问docker容器,x.x.x:5000
,而无需端口映射?
不同dock主机上的所有docker容器都可以直接相互访问。
创建虚拟机时,请确保在“网络”下选择以下选项
Attached to: Bridged NetworkManager
Adapter Type: PCnet-Fast III (Am 79C973)
Promiscious Mode Allow All
Install docker, libvrt
确保使用root完成以下操作
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start
在/etc/sysconfig/networkscripts中创建文件ifcfg-xxxxx
DEVICE=xxxxx
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
并在文件末尾附加到ifcfg-p2p1
/ifcfg-eth0
BRIDGE=xxxx
跑
brctl show
要确保桥接连接具有适配器,请参见p2p1
或eth0
。
# brctl show
bridge name bridge id STP enabled interfaces
gsbr01 8000.080027595649 no eth0
virbr0 8000.5254004c1564 yes virbr0-nic
现在,在启动docker之前,我们必须使用桥接器,而不是docker0
来执行此操作,请以docker-d-b=gsbr01
$ echo 'DOCKER_OPTS="-b=gsbr01"' >> /etc/sysconfig/docker
$ sudo service docker start
检查结果:
# brctl show
bridge name bridge id STP enabled interfaces
gsbr01 8000.080027595649 no eth0
veth5806f27
vethb3e33da
virbr0 8000.5254004c1564 yes virbr0-nic
docker -d -b=gsbr01
您可以通过主机上的IP别名来实现这一点。
首先,在主机上添加一个与主接口具有不同IP地址的虚拟接口。我们将用IP10.0.0.10
调用主接口eth0
,用IP地址10.0.0.11
调用虚拟接口eth0:1
。
ifconfig eth0:1 10.0.0.11 netmask 255.255.255.0 up
现在运行容器并将端口5000映射到相应的接口。例如:
docker run -p 10.0.0.10:5000:5000 -name container1 <someimage> <somecommand>
docker run -p 10.0.0.11:5000:5000 -name container2 <someimage> <somecommand>
现在,您可以在外部使用不同的IP地址访问端口5000上的每个容器。
主机:Mac OS X 10.10.5 Docker 1.10.1 我做过这样的事: 步骤1:为永久postgres数据创建卷 -->没有打开端口5432 更新2:更陌生。我也这样做过: 阻止Docker。然后,在我的主机中运行一个普通的PostgreSQL 9.4.4实例(这里不涉及docker,只在Mac OS X主机中运行postgres,监听端口5432)。一切正常: 为什么? 有道理吗?
我有一个问题,或者最好说有两个问题。两者都依赖于Docker,并且与Docker如何处理容器主机名和端口的理解有关。 假设我有两个服务在不同的docker容器中运行,并将容器中的端口80公开到端口8081(service1)和端口8082(service2): 服务1: 8081: 80服务2: 8082: 80 现在我很清楚,从主机的角度来看,我可以通过使用公开的端口(http://localh
我可能遗漏了一些可笑的东西,但我试图向我的主机(Mac)公开的每个docker容器似乎都不起作用。我可以看出这些容器正在运行,并且似乎已经正确地暴露在我选择的端口中。我错过了什么明显的东西吗?任何帮助都将不胜感激。 我下载了最新的ElasticSearch图像:https://www.elastic.co/guide/en/elasticsearch/reference/current/docke
问题内容: 我想在不同主机上的某些Docker容器中运行任务。而且我编写了一个管理器应用程序来管理容器(启动任务,停止任务,获取状态等)。容器启动后,它将向管理器发送一个http请求及其地址和端口,因此管理器将知道如何管理该容器。 由于同一主机上可能运行着多个容器,因此它们将被映射到不同的端口。要在我的经理上注册一个容器,我必须知道每个容器映射到哪个端口。 如何 在 Docker容器中获取映射的端
问题内容: 除了使用环境变量之外,还有什么方法可以从在该主机上运行的容器内部获取Docker主机的主机名? 我知道我可以在创建容器时将主机名作为环境变量传递给容器。 我想知道如何在运行时查找它。 有没有办法在Docker主机中运行的容器获取“ foo.example.com”? 编辑以添加用例: 容器将创建SRV记录以用于表单的服务发现 其中20003是docker主机上动态分配的端口,用于服务监
除了使用环境变量之外,还有哪些方法可以从运行在该主机上的容器内部获取docker主机的主机名?我知道我可以在容器创建时将主机名作为环境变量传递给容器。我想知道如何在运行时查找它。 在docker主机中运行的容器是否有方法获得“foo.example.com”? 编辑以添加用例: 容器将为表单的服务发现创建一个SRV记录 其中20003是docker主机上动态分配的端口,用于侦听bar中某个固定端口