在 Docker 中设置主机名(host)可以通过以下几种方式实现,具体取决于你的使用场景:
--hostname
参数设置容器主机名在运行容器时,使用 --hostname
或 -h
参数直接指定容器的主机名:
docker run --hostname mycontainer.example.com -it alpine
hostname
命令会显示 mycontainer.example.com
。--add-host
添加自定义主机解析如果需要修改容器内的 /etc/hosts
文件(例如添加自定义域名解析),使用 --add-host
:
docker run --add-host "custom.host:192.168.1.100" -it alpine
/etc/hosts
中添加一行:192.168.1.100 custom.host
。在 docker-compose.yml
文件中配置:
services:
web:
image: nginx
hostname: my-web-container
extra_hosts:
- "custom.host:192.168.1.100"
hostname
:设置容器的主机名。extra_hosts
:添加自定义主机解析。如果需要所有容器默认使用特定的 DNS 或主机解析,修改 Docker 守护进程配置(/etc/docker/daemon.json
):
{
"dns": ["8.8.8.8", "8.8.4.4"],
"dns-search": ["example.com"]
}
sudo systemctl restart docker
。在用户自定义网络中,可以通过 --network-alias
为容器设置网络别名,其他容器可通过别名访问:
# 创建自定义网络
docker network create mynet
# 运行容器并设置别名
docker run --network mynet --name container1 --network-alias app1 -it alpine
docker run --network mynet --name container2 -it alpine
# 在 container2 中 ping app1 会解析到 container1
/etc/hosts
,可挂载自定义文件:
bash
docker run -v /path/to/custom_hosts:/etc/hosts -it alpine
根据需求选择合适的方式即可。