跳到主要内容

docker run限制访问IP

在 Docker 中使用 docker run -p 命令时,您可以指定容器应该绑定到宿主机上的哪个IP地址和端口。格式通常如下:

docker run -p [宿主机IP地址:]宿主机端口:容器端口 <其他参数> <镜像名>

这里的 -p 参数是用来发布容器的端口到宿主机上的。当您在 -p 参数中指定 0.0.0.0:8080:8080,您告诉 Docker:

  • 0.0.0.0:8080:这是宿主机上的部分,0.0.0.0 表示绑定到宿主机的所有IP地址,这意味着任何能够访问宿主机的网络接口的机器都可以通过宿主机的8080端口来访问容器。
  • 8080:这是容器内部的端口,表示容器内部监听的端口。

不同的宿主机IP地址绑定会影响容器的可访问范围:

  • 0.0.0.0:8080:8080:这会使得容器的8080端口对所有网络接口可用,无论是局域网还是互联网(前提是没有网络防火墙阻止)。
  • 127.0.0.1:8080:8080:这会限制容器的8080端口只能通过宿主机的本地回环接口访问,也就是说,只有在宿主机上的程序可以访问这个端口。
  • [宿主机某个特定IP]:8080:8080:这会使得容器的8080端口只能通过宿主机上的特定IP地址访问,适用于宿主机有多个网络接口,但您只想通过其中一个特定的网络接口来访问容器。

例如,如果您的服务器有一个公网IP(比如 203.0.113.1)和一个私网IP(比如 10.0.0.1),那么:

  • 使用 203.0.113.1:8080:8080 会使得容器的8080端口只能通过服务器的公网IP访问。
  • 使用 10.0.0.1:8080:8080 则只能通过私网IP访问。

在大多数情况下,如果您希望容器服务对所有可能的客户端开放,您应该使用 0.0.0.0:端口号:端口号 这样的绑定方式。如果您需要限制访问,可以选择绑定到特定的IP地址。