Loading... 有一个需求需要不重启容器的情况下修改容器内的hosts, 给供hbase查询用 尝试了以下不可行的方法: 1. 使用docker的volume映射 docker的volume映射的如果是文件夹,文件夹内部的改动可以同步到docker内;如果映射的是文件,文件在containner启动后将不会同步改动 2. docker cp命令 本想着在外部修改好hosts文件后,通过docker cp命令拷贝入容器中,然而容器内的hosts文件也是被挂载的,拷贝会报错 "device or resource busy" **解决办法如下** 使用 docker exec 命令执行命令去改变hosts文件。由于hosts文件是被挂载入容器的,直接用sed修改也会提示 "Device or resource busy" 只能使用重定向去写入。 代码如下 ```bash docker exec -it bigdataapi sh -c 'grep -Ev "\s+要修改的域名\s+#hbase" /etc/hosts > /etc/hosts.tmp && cat /etc/hosts.tmp > /etc/hosts && echo "IP 要修改的域名 #hbase">>/etc/hosts' 例子: docker exec -it bigdataapi sh -c 'grep -Ev "\s+node99\s+#hbase" /etc/hosts > /etc/hosts.tmp && cat /etc/hosts.tmp > /etc/hosts && echo "192.168.0.2 node99 #hbase">>/etc/hosts' ``` 由于hosts文件是key(域名)value(ip)形式的,先要去删除要修改的域名的行,然后进行追加操作 最后修改:2021 年 04 月 20 日 10 : 32 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付