如何通过局域网连接到Docker服务UI



我是Docker的新手,我正在尝试让Nginx代理管理器启动并运行。

到目前为止,我有一个docker-compose。它看起来像(基于我所遵循的教程):
version: "3.9"
networks:
default:
driver: bridge
npm_proxy:
name: npm_proxy
driver: bridge
ipam:
config:
- subnet: 192.168.89.0/24

x-common-keys-core: &common-keys-core
networks:
- npm_proxy
security_opt:
- no-new-privileges:true
restart: always
services:
npm:
<<: *common-keys-core 
container_name: nginx-proxy-manager
image: 'jc21/nginx-proxy-manager:latest'
networks:
npm_proxy:
ipv4_address: 192.168.89.254 
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- $DOCKERDIR/appdata/npm/config:/config 
- $DOCKERDIR/appdata/npm/letsencrypt:/etc/letsencrypt
- $DOCKERDIR/appdata/npm/data:/data
environment:
DB_SQLITE_FILE: "/config/database.sqlite"
DISABLE_IPV6: 'true'

这是工作到目前为止,我可以访问主机上的Nginx代理管理器(NUC运行Ubuntu通过局域网连接到我的路由器)。

然而,我认为在我的本地网络(Windows PC通过LAN连接到同一路由器)的另一台机器上访问相同的UI会很简单。

无论如何,我似乎无法在另一台电脑上打开UI。我的浏览器出现了一个超时错误。

I have try:

  1. 访问192.168.89.254:81,在主机上正常工作
  2. 添加——net=host flag
  3. 在YAML中切换端口/ip
  4. 删除自定义网络/桥接,只使用默认值(即localhost:81)

有人知道如何访问同一网络上的另一台本地PC上的Docker服务的UI吗?我不需要端口转发,因为它是本地的,对吧?

似乎我所要做的就是通过ufw allow 81在我的UFW中暴露端口。一旦暴露,我就可以从本地网络中的任何设备访问UI。

正如@DavidMaze所指出的,为Docker容器指定静态ip似乎不是很有用。最佳实践似乎是使用默认的Docker网络,为不同的容器指定不同的端口,并确保这些端口可以通过UFW访问。因为我没有在我的路由器上进行端口转发,所以它们应该只能从我的本地网络访问。

我仍然有点好奇,尽管桥什么时候会有用。看起来,即使使用桥接,Docker也将桥接网络连接到主机网络。所以我想知道重点是什么……我一定会仔细阅读一些文件的。

这是我更新的YAML:

version: "3.9"

x-common-keys-core: &common-keys-core
security_opt:
- no-new-privileges:true
restart: always
services:
npm:
<<: *common-keys-core 
container_name: nginx-proxy-manager
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- $DOCKERDIR/appdata/npm/config:/config 
- $DOCKERDIR/appdata/npm/letsencrypt:/etc/letsencrypt
- $DOCKERDIR/appdata/npm/data:/data
environment:
DB_SQLITE_FILE: "/config/database.sqlite"
DISABLE_IPV6: 'true'

相关内容

  • 没有找到相关文章

最新更新