温馨提示×

docker里linux hostname怎设

小樊
42
2026-09-18 22:48:02
栏目: 智能运维

在 Docker 里设置 Linux 容器的 hostname 有几种常见方式,取决于你是运行容器时还是Dockerfile 构建时


一、运行容器时设置 hostname(最常用)

1️⃣ docker run 使用 --hostname

docker run -it --hostname my-host centos

进入容器后:

hostname
# 输出:my-host

✅ 只对当前容器生效
✅ 重启容器后仍然保留(因为是容器配置)


2️⃣ docker-compose 中设置

services:
  web:
    image: centos
    hostname: web-host

二、Dockerfile 中设置(不推荐单独用)

FROM centos
HOSTNAME my-host

⚠️ 注意:

  • Docker 构建阶段会生效
  • 运行容器时会被 --hostname 或默认名覆盖
  • 实际生产中很少用

三、进入容器后手动修改(临时)

docker exec -it 容器名 bash
hostname new-host

⚠️ 问题:

  • 只是临时修改
  • 某些 Linux 发行版(如 CentOS 7+)需要额外改 /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

hostname
cat /etc/hostname

✅ 推荐做法总结

场景 推荐方式
正常运行容器 docker run --hostname
编排服务 docker-compose hostname
临时测试 hostname 命令

如果你用的是 CentOS / Ubuntu / Alpine,或者 K8s,我也可以给你对应示例。

0