Jim*_*mix 3 networking ping command-line-interface docker docker-run
1. --name和--hostnamedocker run命令有什么区别?
2.为什么foo不能通过bar其hostname= 到达barhost?
创建网络并连接两个容器:
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
Run Code Online (Sandbox Code Playgroud)
barhost从foo终端ping
ping -c2 barhost
Run Code Online (Sandbox Code Playgroud)
给出结果:
错误的地址“ barhost”
但是bar从foo
ping -c2 bar
Run Code Online (Sandbox Code Playgroud)
成功:
PING条(172.31.0.2):56个数据字节来自172.31.0.2的64字节:seq = 0 ttl = 64时间= 0.260 ms来自172.31.0.2的64字节:seq = 1 ttl = 64时间= 0.155 ms
--- bar ping统计信息---传输2个数据包,接收2个数据包,0%数据包丢失
3.如果您不能达到bar其hostname从foo为什么它是可以做到从内bar?
# assuming you've created network test from point 2.
docker run --rm -it --name bar --network test --hostname barhost alpine:latest
Run Code Online (Sandbox Code Playgroud)
barhost从bar终端ping
ping -c2 barhost
Run Code Online (Sandbox Code Playgroud)
成功:
PING barhost(172.31.0.2):56个数据字节来自172.31.0.2的64个字节:seq = 0 ttl = 64时间= 0.135 ms来自172.31.0.2的64个字节:seq = 1 ttl = 64时间= 0.127 ms
--- barhost ping统计信息---传输2个数据包,接收2个数据包,0%数据包丢失
1,docker run命令中的--name和--hostname有什么区别?
答:当我们使用docker run命令docker创建一个容器并为其分配类型的容器ID UUID时。现在,可以使用此容器ID来引用创建的容器。但是记住此容器ID可能很困难。
因此我们可以--name在docker run命令中使用。现在,您可以使用“容器ID”来引用创建的容器,也可以使用相同的容器名称。
同样,在创建Docker容器时,主机名默认为Docker中容器的ID。您可以使用覆盖主机名--hostname。我已经从Docker docs中获取了这个。
现在考虑一个场景,在该场景中,您将通过代码使用Docker容器,并且想要引用docker。由于docke rid是在创建时生成的,因此您无法事先知道它,因此可以使用--name。要知道何时在docker run中使用--hostname,请从此stackoverflow帖子中读取
2.为什么foo无法通过其主机名= barhost到达bar?
回答:如在指定的上述计算器张贴的--hostname不真正地改变,使得相同的可用于从外部访问它搬运工容器中的主机名。它的用例类似于为什么要使用--name标志,即您期望某个值,否则将在容器创建时生成该值。
3.如果您不能通过foo的主机名访问bar,为什么可以在bar内部进行呢?
答:到目前为止,答案必须很明确。在容器内部,提到的主机名--hostname存在,但在容器外部不是正确的。
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |