我正在尝试使用 docker 设置我的 Plex 服务器。我已按照 LinuxServer.io docker 页面上的步骤进行操作。当我运行 docker 命令时,它说它正在运行 find 并且我没有收到任何错误。但是,当我尝试通过
localhost:32400/web
访问网络用户界面时,我得到的只是“加载页面问题”
我正在使用 docker for windows 和 Linux 容器。
docker 命令:
docker run -d --name=plex --net=host -e PUID=1000 -e PGID=1000 -e TZ=Europe/London -e VERSION=docker -v D:\plex\config:/config -v D:\media\tvseries:/data/tvshows -v D:\media\movies:/data/movies -v D:\media\transcode:/transcode --restart unless-stopped linuxserver/plex
当我使用
docker ps
时,plex 容器看起来正在运行。
我是码头工人的新手。我环顾四周,找不到无法访问 UI 的原因。
如果您需要更多信息,请告诉我。
码头工人检查:
"NetworkMode": "host",
"PortBindings": {
"32400/tcp": [
{
"HostIp": "",
"HostPort": "32400"
}
]
},
如果您需要更多信息,请告诉我
--net=host
不适用于docker-for-windows
.
原因:
Linux 容器需要共享一个linux 主机的内核。
为了实现这一点,当 docker for windows 运行一个 linux 容器时,它必须设置一个 hyper-v 机器。如果你打开 Hyper-V 管理器,你会看到
MobyLinuxVM
正在运行。
所以,当你使用
--net=host
时,容器只会使用MobyLinuxVM
的网络,而不是windows。所以,localhost
是行不通的。
建议:
对于您的场景,我建议您删除
--net=host
,在命令行中添加端口映射:
docker run -d --name=plex -p 32400:32400 -e PUID=1000 -e PGID=1000 -e TZ=Europe/London -e VERSION=docker -v D:\plex\config:/config -v D:\media\tvseries:/data/tvshows -v D:\media\movies:/data/movies -v D:\media\transcode:/transcode --restart unless-stopped linuxserver/plex
然后,魔法会在这里发生,docker for windows 将使用 windows 路由机制将 windows 的 32400 端口映射到您的容器。你可以从 windows 访问容器的服务。
当我在 docker for windows 上使用 here 提供的 docker-compose 文件时,我遇到了完全相同的问题。根据之前的回答,我从文件中删除了
network_mode: host
条目,并从具有 docker compose up -d
文件的同一目录运行 docker-compose.yml
命令,它开始正常。
然后我可以毫无问题地使用主机 IP(我的 Windows 机器 IP 地址)以及本地主机,如下所示
http://<machine-ip i.e. hostip>:32400/web
或者
http://localhost:32400/web
这是我的
docker-compose.yml
文件
version: "2.1"
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
ports:
- 32400:32400/tcp
environment:
- TZ=Africa/Cairo
- VERSION=docker
hostname: aimediaserver
volumes:
- F:\Media\config:/config
- F:\Media\TV:/tv
- F:\Media\Movies:/movies
restart: unless-stopped