在 Docker 里设置 Linux 容器的 hostname 有几种常见方式,取决于你是运行容器时还是Dockerfile 构建时。
docker run 使用 --hostnamedocker run -it --hostname my-host centos
进入容器后:
hostname
# 输出:my-host
✅ 只对当前容器生效
✅ 重启容器后仍然保留(因为是容器配置)
docker-compose 中设置services:
web:
image: centos
hostname: web-host
FROM centos
HOSTNAME my-host
⚠️ 注意:
--hostname 或默认名覆盖docker exec -it 容器名 bash
hostname new-host
⚠️ 问题:
/etc/hostname/etc/hosts(很重要)Docker 默认会把 hostname 写进 /etc/hosts:
127.0.0.1 localhost
172.17.0.2 my-host
如果你手动改 hostname,建议也改:
echo "my-host" > /etc/hostname
否则某些服务(如 Kafka、Hadoop)会出错。
hostname
cat /etc/hostname
| 场景 | 推荐方式 |
|---|---|
| 正常运行容器 | docker run --hostname |
| 编排服务 | docker-compose hostname |
| 临时测试 | hostname 命令 |
如果你用的是 CentOS / Ubuntu / Alpine,或者 K8s,我也可以给你对应示例。