繁体   English   中英

如何在没有端口映射的情况下将docker容器的ip和端口暴露给外部docker主机?

[英]How to expose docker container's ip and port to outside docker host without port mapping?

当我在一个docker主机上为同一个Web映像启动两个docker容器时。

  • 两个docker容器在同一个端口5000上侦听
  • 两个容器的端口5000映射到49155 host的不同端口: 49156
  • 49155 host外部访问这两个容器需要访问49155主机ip和端口4915549156

是否有解决方案通过其IP和端口xxxx:5000从端口docker主机访问docker容器,没有端口映射?

不同dock主机上的所有docker容器都可以直接相互访问。

您可以使用主机上的IP别名来完成此操作。

首先,在主机上添加一个虚拟接口,该接口的IP地址与主接口不同。 我们将主接口eth0调用IP 10.0.0.10 ,将虚拟接口eth0:1调用IP地址10.0.0.11

 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上的每个容器。

创建VM时,请确保在网络下选择以下内容

Attached to:        Bridged NetworkManager
Adapter Type:       PCnet-Fast III (Am 79C973)
Promiscious Mode    Allow All

RHEL 6.5 / Fedora 20

Install docker, libvrt

确保使用root完成以下操作

# chkconfig NetworkManager off
# chkconfig network on  
# service NetworkManager stop
# service network start

/ etc / sysconfig / network-scripts中创建文件ifcfg-xxxxx

DEVICE=xxxxx
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0

ifcfg-p2p1文件末尾的ifcfg-p2p1 / ifcfg-eth0 BRIDGE=xxxx

重启虚拟机

brctl show 

确保桥接连接有一个适配器p2p1eth0例如

# brctl show
bridge name     bridge id               STP enabled     interfaces
gsbr01          8000.080027595649       no              eth0
virbr0          8000.5254004c1564       yes             virbr0-nic

现在在启动docker0之前我们必须使用我们的桥而不是docker0来做到这一点,运行docker -d -b=gsbr01作为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM