2017-08-01 50 views
0

我想在Docker中启动Elasticsearch容器。默认情况下,我看到几乎无处不在一样的东西:Docker中的Elasticsearch地图端口

docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

现在是我的问题:为什么我们要映射我们的主机网络上的端口?我了解端口映射,但我没有看到它的巨大优势。

在我看来我总是会做这样的事情:

$ docker network create logging 
20aa4c7bf2d8289d8cbd485c3e384f9371eed87204625998687c61e4bad27f14 

$ docker run -d --name es --net logging docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

,并通过使用它的名字(在这种情况下,ES)和部署在同一网络中的容器连接到ES。我认为我的ES在其私人码头网络中更安全。

我发现当你需要连接elasticsearch的容器不在同一个网络中时,端口映射有一个优点。但是还有其他优点,或者为什么总是用端口映射显示?

回答

0

所以主机访问更多的是可访问性。如果您在本地计算机上运行docker,并且只想在该计算机上访问该应用程序,则不需要主机映射。

现在,如果您需要在除码头主机以外的外部计算机上访问此应用程序,则需要执行该端口映射。

docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

这将docker(右侧)中的主机端口9200(左侧)映射到9200。监听界面是0.0.0.0,这意味着所有的接口。因此,任何人都可以访问这台机器。

如果你想让它更安全,那么你不喜欢它下面

docker run -d -p 127.0.0.1:9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

这将只监听本地主机上。所以只有你可以在机器上访问它。但是,如果你需要从别的什么地方访问它,那么你会使用SSH隧道

ssh -L 9200:127.0.0.1:9200 <user>@<HOSTIP> 

这台机器上,你可以访问它127.0.0.1:9200

安全的下一个级别是当加使用防火墙像ufwfirewalld

你做了什么与网络命令

docker network create logging 

基本上创建新的网络和隔离其他码头集装箱在主机上访问它。但只要外部可访问性,您仍然需要将其映射到主机端口

希望这可以回答您的问题