何时在docker中使用--hostname?

时间:2017-03-26 16:03:55

标签: docker

--hostname是否像docker容器环境中的域名系统一样,在引用其他容器时可以替换--ip

4 个答案:

答案 0 :(得分:33)

--hostname标志仅更改容器内的主机名。如果您的应用程序需要主机名的特定值,则可能需要这样做。它不会更改docker之外的DNS,也不会更改网络隔离,因此不允许其他人连接到具有该名称的容器。

您可以使用容器名称或容器(简称12个字符)id,使用docker的嵌入式dns从容器连接到容器,只要您在同一网络上有两个容器即可网络不是默认的桥梁。

答案 1 :(得分:5)

--hostname是一个可以与docker run命令一起给出的参数,它将指定的名称设置为容器主机名,而--ip是将特定IP地址(ipv4)设置为的参数。特别的容器。

docker run --hostname test --ip 10.1.2.3 ubuntu:14.04 

以下命令将创建一个docker容器,其基本映像为ubuntu-14.04,主机名为test,容器ip地址为10.1.2.3

答案 2 :(得分:1)

对于那些需要以相同网络中其他容器将其视为仅使用--net-alias=${MY_NEW_DNS_NAME}

的方式更改主机名的人

例如

docker run -d --net-alias=${MY_NEW_DNS_NAME} --net=my-test-env --name=my-docker-name-test <dokcer-contanier>

see

答案 3 :(得分:0)

这不是一个直接的答案,我只是想总结一些不太清楚的东西。

为了让容器相互通信,

  1. 创建一个非默认网络:

docker network create MyNetwork

  1. 在运行时将容器连接到此网络:

docker run --network MyNetwork --name Container1 Image1

docker run --network MyNetwork --name Container2 Image2

现在,如果 Container1 是在端口 80 上运行的网络服务器,那么 Container2 内部的进程将能够使用 Container1 的主机名和端口 80 解析它

进一步,如果 Container1 是这样设置的:

docker run --network MyNetwork --name Container1 -p 8080:80 Image1

然后

  • Container2 可以访问 Container1:80
  • 主机可以访问 127.0.0.1:8080

这是从这里总结的https://jaaq.medium.com/making-docker-containers-talk-to-each-other-by-hostname-using-container-networking-94835a6f6a5b

您还可以使用以下方法确认容器已连接并检查其内部 IP 地址:

docker network inspect MyNetwork