etcd官方docker镜像及dockerfile问题处理

文章讲述了作者在使用自定义Dockerfile部署etcd时遇到的问题,即无法连接到etcd。解决方法包括更换为官方Etcd镜像并修改启动命令,确保etcd监听所有外部IP,以及正确配置Docker网络。
摘要由CSDN通过智能技术生成

解决下我之前etcd使用docker镜像启动的坑

1、问题镜像docker-file:

这个dockerfile看着看不出来问题,但如果有人真的执行我之前两篇文章的文件,就会有问题,什么问题呢,无法连接到etcd,由于我是刚装上docker,排查了一圈,包括docker网络及是否是本地docker的网络问题,排查了一圈之后,发现原来是我的dockerfile的问题:

# 使用一个轻量级的基础镜像
FROM golang:latest
 
# 设置工作目录
WORKDIR /app
 
# 将本地编译好的可执行文件复制到容器中,此处etcd_server.exe是我提前打好的etcd3.5的可编译文件
COPY ./server/etcd_server .
 
# 暴露应用程序监听的端口(如果有的话)
EXPOSE 2379
 
# 启动应用程序
CMD ["./etcd_server"]

2、解决方案

2.1 换成正规官网的etcd镜像

这个换成官网的etcd,我看默认启动的还是127.0.0.1,所以在启动命令的时候要加入"--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"

# 使用官方 etcd 镜像
FROM quay.io/coreos/etcd:latest

# 将 etcd 数据目录复制到容器中
WORKDIR /etcd

VOLUME /data

# 暴露 etcd 默认端口
EXPOSE 2379 2380

# 启动脚本
CMD ["etcd"]
2.2 修改镜像file

问题是由于在docker中监听的是127.0.0.1,所以无法暴露在外面,修改CMD ["./etcd_server", "--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"],此处让在容器中使用监听所有端口,问题得到解决:

# 使用更轻量的基础镜像
FROM golang:latest

# 设置工作目录并复制本地文件到容器中
WORKDIR /app

COPY ./etcd_server .

# 确保 etcd_server 具有可执行权限
RUN chmod +x etcd_server

# 暴露应用程序监听的端口(如果有的话)
EXPOSE 2379

# 启动应用程序
CMD ["./etcd_server", "--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"]

当然我还尝试了,在镜像打包好,然后把etcd_server在docker容器中直接手动启动,这个是无法解决的,由于docker中该服务并没有启动,所以端口没有暴露出去

此处算是把etcd的docker镜像部署收尾了

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷隐凡二

相识便是缘,开启技术大门

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值