Docker仍然可以看到打开的端口有和没有 – 链接标志设置

我一直在关注这两个教程来了解一下Dockernetworking:

  • https://docs.docker.com/engine/examples/running_redis_service/
  • https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks

第一个教程说容器不暴露端口通过不使用-p或-P标志。

$ docker run --name redis-server -d <your username>/redis 

而当运行另一个容器时,它使用–link标志来“redis”容器:

 $ docker run --name redis-client --link redis:db -i -t ubuntu:14.04 /bin/bash 

这样,我可以从redis-client容器连接到redis-server容器,因为它们是链接的。 但在尝试其他configuration的时候,我运行了另一个容器,让我们称之为redis-client-2 – 就在我停止并删除了redis-client容器之后 – 它不使用–link标志:

 $ docker run --name redis-client-2 -i -t ubuntu:14.04 /bin/bash 

我注意到,即使没有 – 连接标志设置,我可以连接到Redis 服务器容器的redis服务器从redis客户端2

我的问题是,我误解了Docker的链接和暴露端口的概念? 为什么仍然可以使用或不使用–link标志连接到redis-server容器?

提前致谢

同一个Dockernetworking上的Docker容器(如果没有设置, default )彼此可以自由地相互通信。 --link是一stream的Dockernetworking之前的一个退化function。

-p-P选项只涉及Dockernetworking以外的端口(即主机),并且不涉及容器到容器的通信。