docker elasticsearch容器不转发端口(macOs)

我有一个容器设置来运行elasticsearch.服务启动但我无法通过curl或浏览器连接到它.

 RUN \
 cd /tmp && \
 wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-  1.3.2.tar.gz && \
 tar xvzf elasticsearch-1.3.2.tar.gz && \
 rm -f elasticsearch-1.3.2.tar.gz && \
 mv /tmp/elasticsearch-1.3.2 /elasticsearch

 # Define mountable directories.
 VOLUME ["/data"]

 # Define default command.
  CMD ["/elasticsearch/bin/elasticsearch"]

 EXPOSE 9200
 EXPOSE 9300

连接到http:// localhost:9200不会产生任何结果. docker ps显示端口;

 0.0.0.0:49179->9200/tcp,0.0.0.0:49180->9300/tcp
 ...
 net::ERR_ADDRESS_UNREACHABLE

我错过了一些配置值吗?谢谢!

[更新]我也在run命令中尝试了-p

 docker run -i -p 9200:9200 -p 9300:9300 -t --rm -P team1/image1
最佳答案
我测试了你的Dockerfile,但它确实有效.

FROM dockerfile/java
RUN \
  cd /tmp && \
  wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.tar.gz && \
  tar xvzf elasticsearch-1.3.2.tar.gz && \
  rm -f elasticsearch-1.3.2.tar.gz && \
  mv /tmp/elasticsearch-1.3.2 /elasticsearch
# Define mountable directories.                                                                                    
VOLUME ["/data"]
# Define default command.                                                                                          
CMD ["/elasticsearch/bin/elasticsearch"]
EXPOSE 9200
EXPOSE 9300

我尝试构建这个Dockerfile并运行它.

$docker build -t 25312935 .
$docker run -t -p 9200:9200 -p 9300:9300 --rm 25312935
[2014-08-15 04:41:08,349][INFO ][node                     ] [Black Crow] version[1.3.2],pid[1],build[dee175d/2014-08-13T14:29:30Z]
[2014-08-15 04:41:08,349][INFO ][node                     ] [Black Crow] initializing ...
[2014-08-15 04:41:08,353][INFO ][plugins                  ] [Black Crow] loaded [],sites []
[2014-08-15 04:41:10,444][INFO ][node                     ] [Black Crow] initialized
[2014-08-15 04:41:10,444][INFO ][node                     ] [Black Crow] starting ...
[2014-08-15 04:41:10,547][INFO ][transport                ] [Black Crow] bound_address {inet[/0:0:0:0:0:0:0:0:9300]},publish_address {inet[/172.17.0.72:9300]}
[2014-08-15 04:41:10,560][INFO ][discovery                ] [Black Crow] elasticsearch/0mpczYoYSZCiAmbkxcsfpg
[2014-08-15 04:41:13,601][INFO ][cluster.service          ] [Black Crow] new_master [Black Crow][0mpczYoYSZCiAmbkxcsfpg][eeb3396b1ecc][inet[/172.17.0.72:9300]],reason: zen-disco-join (elected_as_master)
[2014-08-15 04:41:13,615][INFO ][http                     ] [Black Crow] bound_address {inet[/0:0:0:0:0:0:0:0:9200]},publish_address {inet[/172.17.0.72:9200]}
[2014-08-15 04:41:13,615][INFO ][node                     ] [Black Crow] started
[2014-08-15 04:41:13,634][INFO ][gateway                  ] [Black Crow] recovered [0] indices into cluster_state

如下所示,请求127.0.0.1:9200返回json响应.

$curl 127.0.0.1:9200
{
  "status" : 200,"name" : "Black Crow","version" : {
"number" : "1.3.2",},"tagline" : "You Know,for Search"
}

检查-p选项.这意味着将容器的端口公开给主机.如果您没有明确写入主机端口,则docker会像下面一样分配随机端口.

$docker run -t -p 9200 -p 9300 --rm 25312935
$docker ps -l
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS              PORTS                                              NAMES
1aa4c2c84d04        25312935:latest      /elasticsearch/bin/e   15 seconds ago      Up 15 seconds       0.0.0.0:49153->9200/tcp,0.0.0.0:49154->9300/tcp   sad_shockley

0.0.0.0:49153-\u0026gt;9200/tcp表示您可以通过主机的49153端口访问容器的9200端口.

$curl 127.0.0.1:49153
{
  "status" : 200,"name" : "Golem",for Search"
}

因此,如果您想使用主机9200端口,请显式写入主机端口,如-p 9200:9200或-0.0.0.0:9200:9200`

$docker ps -l
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS              PORTS                                            NAMES
eeb3396b1ecc        25312935:latest      /elasticsearch/bin/e   59 seconds ago      Up 58 seconds       0.0.0.0:9200->9200/tcp,0.0.0.0:9300->9300/tcp   high_elion

如果仍然无效,请尝试–net = host选项.您可以使用此选项在容器内使用主机网络堆栈.

$docker run -t --net=host --rm 25312935
$curl 127.0.0.1:9200
{
  "status" : 200,for Search"
}

如果两者都不起作用,我认为您需要检查其他网络配置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读8.8k次,点赞2次,收藏7次。本文介绍Docker Compose的网络的配置。_docker compose 网络配置
文章浏览阅读1.5w次,点赞7次,收藏76次。原网提供的教程需要先刷系统到U盘,再把U盘的系统转移到emmc,但是我下面提供的镜像不需要此操作,注意区分。双头USB线一根(买或者自己做,网上有教程);电脑一台;镊子或者别针(或者其他导电的东西,用来短接主板);螺丝刀,电吹风(加热背胶更好撕);U盘一个(刷机和扩展玩客云硬盘容量都用得上);下面这些链接里面的资源下载备用。#镜像地址:https://www.aliyundrive.com/s/NXjbaKC3Hyq提取码: 5i7a。_玩客云 armbian
文章浏览阅读940次,点赞20次,收藏20次。通过 docker run 命令创建一个新的容器。
文章浏览阅读1k次,点赞20次,收藏20次。Podman 是一个开源的容器运行时项目,可在大多数 Linux平台上使用。Podman提供与Docker 非常相似的功能。Podman 提供了一个与 Docker 兼容的 CLI 工具(命令行界面),可以这样说,会使用 docker 基本就会使用 podman。_podman 替代
文章浏览阅读2.1k次。请注意,这些命令需要在 Docker 主机上执行,并且需要有相应的权限才能访问容器的日志文件。确保你有足够的权限来执行这些命令,或者在以管理员身份运行命令。此外,还要注意这些命令可能会清空所有容器的日志文件,包括正在运行的和已经停止的容器。如果只想清空特定容器的日志文件,可以根据需要修改命令。删除容器中netcore控制台存储到docker日志记录。_docker清空日志命令
文章浏览阅读1.1k次,点赞37次,收藏40次。nacos搭建集群连接mysql实现nginx负载均衡实现讲解。_niginx nacos 集群实现负载均衡
文章浏览阅读3.5k次,点赞35次,收藏36次。Docker 是一种容器引擎,可以在容器内运行一段代码。Docker 镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。要构建镜像,docker 使用一个名为 Dockerfile 的文件。Dockerfile 是一个包含许多指令(RUN、COPY、EXPOSE 等)的文件。成功执行这些命令后,docker 将创建一个镜像供我们在任何地方使用。
文章浏览阅读2.6k次。2.即使在Dockerfile中换源,但在bulid过程中,依然可以注意到连接的是bebian官方源,因为debian 12改了,默认不使用/etc/apt/sources.list文件,这个文件初始是空的,真正的仓库配置在 /etc/apt/sources.list.d/ 目录下,故,修改源需要用RUN rm -rf /etc/apt/sources.list.d/*给每个pip install后面都加上-i https://pypi.tuna.tsinghua.edu.cn/simple。_error: failed to solve: process "/bin/sh -c yum makecache" did not complete
文章浏览阅读9.7k次,点赞2次,收藏4次。嗨,各位猫头虎博主的小伙伴们!。本文将详细分析该问题的根本原因、解决方法以及如何避免类似的状况。让我们一起来解决这个Bug吧!在云原生应用开发中,Docker是不可或缺的工具,但在使用过程中会遇到各种问题,OCI runtime create失败就是其中之一。本文通过深入分析问题的原因,提供了解决方法和避免类似问题的建议。希望本文能帮助您更好地理解和应对这个常见的Bug。_error response from daemon: oci runtime create failed: container_linux.go:34
文章浏览阅读2.2k次,点赞67次,收藏44次。[Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS && 开启AP模式
文章浏览阅读1k次,点赞52次,收藏38次。Docker的运行,依赖linux的环境,官方提供了Docker Desktop for Windows,但是它需要安装Hyper-V,Hyper-V是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。安装过程如果出现超时,不要灰心,多试几次,总会成功的。执行完毕后会重启,在重启的过程中进行安装。此命令省略了镜像版本和运行参数,docker使用latest作为版本,即最新版本。从hello world的例子中,也可以体验到,docker实例的运行是非常快的。
文章浏览阅读3.6k次,点赞77次,收藏74次。【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全的详细讲解
文章浏览阅读1w次。要删除已存在的 Docker 镜像,您可以使用docker rmi命令。以下是完整的流程。_docker 删除镜像
文章浏览阅读3.3k次。当安装好docker-compose并添加执行权限后,执行命令docker-compose 相关命令时出现 -bash: /usr/local/bin/docker-compose: 无法执行二进制文件。应该是安装包有问题,网上找了几种重新安装方法途径,还是会出现这个问题,最终找到一种可靠重新安装的解决方法,原文。2.从Docker官方网站下载Docker Compose最新版本的二进制文件(下载稍慢)3.授予Docker Compose二进制文件执行权限。1.先卸载Docker Compose的旧版本。_-bash: /usr/local/bin/docker-compose: cannot execute binary file
文章浏览阅读1.1k次。备注:Mysql5.7+ password字段 已改成 authentication_string字段。#备注:Mysql8.0修改密码方式已有变化(此处是个坑,需要注意)#设置完密码策略后重新输入修改命令,更改后的密码为123456。java默认安装路径/usr/lib/jvm/;#进入/etc/profile 配置文件。#查看正在使用的MySQL repo。#验证开启的8080端口是否生效。#验证开启的8080端口是否生效。#执行命令来开启8080端口。#先把root的旧密码置空。_yum install -y java 安装在什么目录
文章浏览阅读1.9k次。Windows11下清理Docker Desktop与wsl的C盘空间占用_wsl清理缓存
文章浏览阅读8.5k次,点赞2次,收藏20次。本机想要启用gpu加速计算,需要由一张多余的nVidia显卡。需要提前禁用nouveau:lsmod | grep nouveau没有输出即禁用了需要安装1、显卡驱动、2、cuda库(安装cuda会自动安装显卡驱动)3、cudnn(深度神经网络的GPU加速库,需要神经网络则安否则可以不安)安装完成后,可以运行nvidia-smi查看GPU设备的状态。_docker gpu
文章浏览阅读6k次,点赞14次,收藏39次。1.Dockerfile命令初识,CMD...;2.idea配置docker,图形化界面;3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器;4.在Linux中测试,在宿主机用swagger进行测试;_springboot dockerfile
文章浏览阅读1k次,点赞2次,收藏2次。截止目前,Redis 的最新稳定版本是 6.2.6。这个版本在可读性、性能和稳定性方面进行了改进,并增加了一些新的命令和功能。_docker redis配置文件
文章浏览阅读1.5k次,点赞34次,收藏35次。使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们火狐浏览器界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!上面在本地成功部署了FireFox 火狐浏览器,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤。