当docker内使用HBase数据库的时候,由于zookeeper特性,需要在hosts文件内配置host域名映射, 具体问题和解决方案如下。
原理
docker在build过程中修改的hosts文件,会在启动镜像的时候被覆盖掉,导致build过程中所有的修改 都失效了,所以只有在容器启动之后,再进行相关hosts文件的修改,才能保证修改生效。
具体操作
在同一层级目录下:
- Dockerfile
- hosts
- entrypoint.sh
Dockerfile
# 工作目录
WORKDIR /data
# 配置hosts映射-开始
ADD hosts /data/hosts
ADD entrypoint.sh /data/entrypoint.sh
RUN ["chmod","+x","/data/entrypoint.sh"]
# 配置hosts映射-结束
# 启动入口
ENTRYPOINT /data/entrypoint.sh
hosts
192.168.1.176 hadoop1
192.168.1.177 hadoop2
192.168.1.178 hadoop3
entrypoint.sh
#!/bin/sh
# 向hosts文件追加内容
cat /data/hosts >> /etc/hosts;
echo /etc/hosts;
# 启动项目
java -Djava.security.egd=file:/dev/./urandom $jvmConfig -jar $targetFile $springConfig
参考资料
文档信息
- 本文作者:Bob.Zhu
- 本文链接:https://adolphor.github.io/2022/11/07/01-change-docker-hosts-content/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)