通信
容器间通信的一些 Q&A
如果不声明
network
字段, 在同一个 docker compose 之间可以通信吗?可以。
如果不指定一个特定的 network, docker 会指定容器在一个名为
docker0
的默认网桥中如果不声明
expose
选项, 那么同一网络中的其他容器可以访问该容器吗?可以。
但如果启动docker守护进程时指定了
--icc=false
选项,则不可以。
建议声明, 声明该选项有助于使用者了解容器内暴露了那些端口出来供使用。在同一个网络中不同的容器使用了同一个端口会有冲突吗?
不会。
不同的容器使用不同的 host, 所以哪怕两个容器使用了同样的端口,也不会与其他容器冲突。
expose
和ports
字段有什么区别?如果容器内的端口需要在宿主环境访问,则需提供
ports
字段expose
字段在默认情况下是可选的,即使不声明也可以在同一个网络中使用该容器的端口