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以外的端口(即主机),并且不涉及容器到容器的通信。