如何动态将Docker容器主机名设置为宿主机的主机名
动态将容器主机名设置为宿主机主机名的实现方案
直接通过Shell的命令替换能力,在--hostname参数位动态读取宿主机主机名即可,无需提前硬编码固定主机名值。
Linux/macOS 环境下直接使用$(hostname)即可,Shell执行docker run命令时会优先运行hostname命令获取当前宿主机的实时主机名,再将结果作为参数传递给Docker进程。
修改完成的完整启动命令如下:
sudo docker run --name=rabbitmq -d -p 5672:5672 -p 15672:15672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin \ --hostname $(hostname) \ -v rmq_vol:/var/lib/rabbitmq \ rabbitmq:3.9.0
注意事项
- 不要给
$(hostname)添加单引号,单引号会让Shell把内容识别为普通字符串,无法触发命令替换逻辑,会导致容器主机名被设置为字面量的$(hostname) - 如果是Windows PowerShell环境启动Docker,对应的动态取值写法替换为
--hostname $env:COMPUTERNAME;Windows CMD环境下替换为--hostname %COMPUTERNAME% - 该取值逻辑在命令执行时触发,会读取执行命令那一刻的宿主机主机名,后续宿主机修改主机名不会同步到已经创建好的容器,需要重新创建容器时才会读取新的主机名
内容的提问来源于stack exchange,提问作者Aak
相关产品推荐
相关产品推荐

