--hostname参数在容器启动时“锁死”主机名,因其写入内核/proc/sys/kernel/hostname并固化为系统调用返回值,运行时不可修改、重启不丢失、不依赖外部服务;须符合DNS规范(仅限a–z、0–9、-,禁用下划线),推荐与--name、--label、-e HOSTNAME等协同使用以强化标识一致性。
用 --hostname 参数就能在容器启动时“锁死”虚拟主机名——它不是临时设置,而是写入内核参数、绑定进程上下文的静态标识,容器整个生命周期内不可更改。
–hostname 的值在容器初始化阶段被写入 /proc/sys/kernel/hostname,同时成为 gethostname() 和 uname() 系统调用的返回结果。这意味着:
hostname 命令,输出都固定为你指定的值hostnamectl set-hostname 或 echo xxx > /proc/sys/kernel/hostname 修改(会报错 Permission denied)要确保这个“锁死”真正生效且兼容各类应用,必须遵守 DNS 主机名规范:
_、空格、点号 .(除作为分隔符外,如 app-01 可以,app_01 不行)api-prod-v2 比 a1b2c3d4e5f6 更实用)单靠 --hostname 不足以覆盖所有场景,建议组合使用:
curl http://web-01:8080)以下做法会让“锁死”效果打折甚至失效:
hostname xxx —— 仅临时修改 shell 提示符,不影响系统级 hostname,且下次 exec 进入又恢复原值--domainname example.com 替代 --hostname —— domainname 是 DNS 域后缀,不改变主机名本身spec.hostname 字段