如何修改Docker主机网络模式下Elasticsearch的端口号
修改主机网络模式下Elasticsearch的端口号
主机网络模式下,容器直接共享主机的网络命名空间,Docker的端口映射规则不再生效,必须通过修改Elasticsearch自身配置来调整端口。以下是两种可行的解决方法:
方法一:通过环境变量指定端口
直接在environment中添加Elasticsearch的端口配置项,覆盖默认的9200(HTTP)和9300(节点通信)端口。同时注意修正原配置中networks_mode的拼写错误,正确参数为network_mode:
services: elasticsearch_place_data: image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2 container_name: elasticsearch_place_data restart: on-failure environment: - discovery.type=single-node - http.host=0.0.0.0 - ES_JAVA_OPTS=-Xms512m -Xmx512m - xpack.security.enabled=false - http.port=9201 # 自定义HTTP端口 - transport.port=9301 # 自定义节点间通信端口(按需配置) volumes: - es_place_data:/usr/share/elasticsearch/data network_mode: host volumes: es_place_data:
方法二:挂载自定义配置文件
如果需要更复杂的配置,可挂载本地自定义的elasticsearch.yml文件覆盖容器默认配置:
- 创建本地配置文件
elasticsearch.yml,内容示例:
discovery.type: single-node http.host: 0.0.0.0 xpack.security.enabled: false http.port: 9201 transport.port: 9301
- 修改
docker-compose.yml添加配置挂载:
services: elasticsearch_place_data: image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2 container_name: elasticsearch_place_data restart: on-failure environment: - ES_JAVA_OPTS=-Xms512m -Xmx512m volumes: - es_place_data:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 挂载自定义配置 network_mode: host volumes: es_place_data:
注意事项
- 确保自定义端口未被主机上其他进程占用,否则Elasticsearch启动会失败。
- 修改端口后,访问Elasticsearch需使用新端口,例如
http://localhost:9201。
内容的提问来源于stack exchange,提问作者Helgi Borg
相关产品推荐
相关产品推荐

