在Docker中映射Elasticsearch的端口
我想在Docker中启动一个Elasticsearch容器。 默认情况下,我几乎可以看到所有的东西
docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1
现在是我的问题:为什么我们要在我们的主机networking上映射端口? 我了解端口映射,但我没有看到它的巨大优势。
在我看来,我总是会这样做:
$ docker network create logging 20aa4c7bf2d8289d8cbd485c3e384f9371eed87204625998687c61e4bad27f14 $ docker run -d --name es --net logging docker.elastic.co/elasticsearch/elasticsearch:5.5.1
并通过使用它的名称(在这种情况下)连接到ES,并在同一networking中部署容器。 我认为我的ES在私人dockernetworking中更安全。
当你需要连接到elasticsearch的容器不在同一个networking中时,我发现端口映射有一个优点。 但是还有其他的好处,或者为什么总是显示端口映射?
所以主机访问更多的是可访问性。 如果您在本地计算机上运行docker,并且只想在该计算机上访问该应用程序,则不需要主机映射。
现在,如果您需要在除docker主机以外的外部计算机上访问此应用程序,则需要执行该端口映射。
docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1
这将主机端口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上访问它
当你使用ufw
, firewalld
等防火墙时,会增加一个安全等级。
你用networking命令做了什么
docker network create logging
基本上创build新的networking,隔离其他docker容器在主机上访问它。 但只要涉及到外部可访问性,您仍然需要将其映射到主机端口
希望这回答你的问题
- 如果容器已经创build并正在运行,如何使用docker将主机端口分配给容器端口?
- 使用Docker Compose运行时的端口发布
- Rancher CLI随机主机端口映射
- 使用Python在Docker镜像中构build一个简单的HTTPServer
- 无法连接Jenkins jlnp奴隶到安装了使用Docker jenkins / jenkins的Centos 7 master?
- 托pipe在centos:centos7 docker容器上的Tomcat无法查看容器外部的网页
- Docker – 绑定0.0.0.0:4000失败:端口已被分配
- Docker端口转发不会调用css和图像
- 无法连接到Docker中的MySQL服务器