如何仅在docker网络中公开端口?

cha*_*rsi 0 nginx docker

我有一个多克网络的端口(运行几个应用程序3000,4200曝光等).我还有一个在同一个Docker网络中运行的nginx容器,它在端口80上托管这些应用程序,具有不同的域名(site1.com,site2.com).

但是现在如果我直接进入应用程序运行的端口(localhost:3000)我也可以这样访问它们.

如何仅将这些端口公开给nginx容器而不是主机系统?

Far*_*ahi 6

但是现在如果我直接进入应用程序运行的端口(localhost:3000),我也可以这样访问它们.

那是因为你在你的使用-paka --publish命令docker run

说明:

如果要仅在容器之间公开端口,请勿使用-p--publish仅将它们放在同一个docker网络上.

例:

让我们创建一个新的用户定义网络:

sudo docker network create appnet
Run Code Online (Sandbox Code Playgroud)

让我们为反向代理创建nginx容器,它应该对外界可用,所以我们使用发布.

sudo docker run --name nginx -d --network appnet nginx
Run Code Online (Sandbox Code Playgroud)

现在将您的应用程序放在同一网络中,但不要暴露端口.

sudo docker run --name app1 -d --network appnet <app image name/id>
Run Code Online (Sandbox Code Playgroud)