1.--name
和--hostname
在docker run
命令中有何不同?
--name
为容器指定一个名称,方便后续操作时使用。而--hostname
则是设置容器的主机名。
2.为什么foo
无法通过其hostname
=barhost
访问bar
?
创建网络并连接两个容器:
docker network create test
docker run --rm -dit --name bar --network test --hostname barhost alpine:latest
docker run --rm -it --name foo --network test --hostname foohost alpine:latest
从foo
终端机pingbarhost
ping -c2 barhost
返回结果:
地址错误'barhost'
但是从foo
ping bar
ping -c2 bar
操作成功:
PING bar (172.31.0.2): 56 字节的数据包 64 字节来自 172.31.0.2: icmp_seq=0 ttl=64 时间=0.260 ms 64 字节来自 172.31.0.2: icmp_seq=1 ttl=64 时间=0.155 ms
--- bar ping 统计 --- 已传输 2 个数据包,收到 2 个,丢失 0%。
3.如果无法从 foo
使用 hostname
访问 bar
,为什么可以从 bar
内部进行访问?
# assuming you've created network test from point 2.
docker run --rm -it --name bar --network test --hostname barhost alpine:latest
从bar
终端ping barhost
ping -c2 barhost
操作成功:
PING barhost(172.31.0.2): 56 数据字节 64 字节来自 172.31.0.2: seq=0 ttl=64 time=0.135 毫秒 64 字节来自 172.31.0.2: seq=1 ttl=64 time=0.127 毫秒
--- barhost ping 统计数据 --- 已传输 2 个数据包, 接收到 2 个数据包,丢失率 0%