在容器之间传递 docker 个 URL
Passing docker URLs between containers
我最近发现 Docker 并且我正在将我的 usenet 服务转移到它上面。我在 Docker 上有 sonarr、radarr、NZBget 和 NZBhydra 全部 运行,但我在服务之间传递文件时遇到问题。我正在使用 nginx 反向代理映射到这些服务中的每一个。
当我尝试从 NZBhydra 获取 nzb 时,它失败了,因为它试图映射到 http://nzbhydra:7891/nzbhydra/foo.nzb?ap=bar, which is obviously failing because http://nzbhydra:7891 不是有效地址。
Docker文件:
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
default.conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /sonarr {
proxy_pass http://sonarr:8989;
}
location /radarr {
proxy_pass http://radarr:8585;
}
location /nzbhydra {
proxy_pass http://nzbhydra:7891;
}
location /nzbget {
proxy_pass http://nzbget:6789;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我希望 URL 映射到 http://localhost:7891/nzbhydra/foo.nzb?ap=bar or http://nzbhydra/nzbhydra/foo.nzb?ap=bar
正如您在问题的评论中所说,您 运行 您的容器 docker start <hash>
。
在你 运行 所有这些之后,看看 docker network ls
- 这个命令列出了所有网络。您应该拥有与容器数量相同的网络 - 因为 docker start
创建了一个独特的(且分离的)网络并将您的容器放在那里。所以无法交流。
要解决这个问题,您必须将您的容器放在一个网络中。为此,您可以将您的服务放入 docker-compose.yml
并使用 docker-compose up
放入 运行。为此,请阅读文档的 Docker Compose 部分。
或者您可以手动将现有容器和 运行ning 容器放到同一个网络上。为此,您可以使用 docker network connect
,例如 docker network connect <nzbhydra network> <sonarr container>
.
一般来说,要掌握所有方面,我的回答会非常长,因此我为您提供这两个提示。我希望这足以推动正确的方向。我强烈建议您阅读更多文档。
我最近发现 Docker 并且我正在将我的 usenet 服务转移到它上面。我在 Docker 上有 sonarr、radarr、NZBget 和 NZBhydra 全部 运行,但我在服务之间传递文件时遇到问题。我正在使用 nginx 反向代理映射到这些服务中的每一个。
当我尝试从 NZBhydra 获取 nzb 时,它失败了,因为它试图映射到 http://nzbhydra:7891/nzbhydra/foo.nzb?ap=bar, which is obviously failing because http://nzbhydra:7891 不是有效地址。
Docker文件:
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
default.conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /sonarr {
proxy_pass http://sonarr:8989;
}
location /radarr {
proxy_pass http://radarr:8585;
}
location /nzbhydra {
proxy_pass http://nzbhydra:7891;
}
location /nzbget {
proxy_pass http://nzbget:6789;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我希望 URL 映射到 http://localhost:7891/nzbhydra/foo.nzb?ap=bar or http://nzbhydra/nzbhydra/foo.nzb?ap=bar
正如您在问题的评论中所说,您 运行 您的容器 docker start <hash>
。
在你 运行 所有这些之后,看看 docker network ls
- 这个命令列出了所有网络。您应该拥有与容器数量相同的网络 - 因为 docker start
创建了一个独特的(且分离的)网络并将您的容器放在那里。所以无法交流。
要解决这个问题,您必须将您的容器放在一个网络中。为此,您可以将您的服务放入 docker-compose.yml
并使用 docker-compose up
放入 运行。为此,请阅读文档的 Docker Compose 部分。
或者您可以手动将现有容器和 运行ning 容器放到同一个网络上。为此,您可以使用 docker network connect
,例如 docker network connect <nzbhydra network> <sonarr container>
.
一般来说,要掌握所有方面,我的回答会非常长,因此我为您提供这两个提示。我希望这足以推动正确的方向。我强烈建议您阅读更多文档。