【问题标题】:Manage other container with nginx container使用 nginx 容器管理其他容器
【发布时间】:2020-10-18 01:00:03
【问题描述】:

如何使用容器中的 nginx 并通过设置配置文件访问其他容器? 我是码头工人的初学者。 我尝试学习如何使用 nginx 通过 docker 容器管理我的应用程序。 例如,我将使用“pgadmin”作为容器中的应用程序。

  1. 创建和启动容器。我尝试使用 [link] 参数连接两个容器。

    sudo docker create -p 80:80 -p 443:443 --name Nginx nginx
    sudo docker create -e PGADMIN_DEFAULT_EMAIL=houzeyu2683@gmail.com -e PGADMIN_DEFAULT_PASSWORD=20121006 -p 5001:80 --link Nginx:PSQLA --name PSQLA dpage/pgadmin4
    sudo docker start Nginx 
    sudo docker start PSQLA
    
  2. 转到 Nginx bash 并安装 nano edit。

    sudo docker exec -it Nginx bash
    apt update
    apt install nano
    
  3. 在 admin.conf 中创建和设置 nginx 配置文件。

    nano etc/nginx/conf.d/admin.conf
    

在 admin.conf 中如下一击。

{
  listen 80;
  server_name admin.my-domain-name;
  location / {
    proxy_pass http://PSQLA:80;
  }
}

我得到这个错误打击。

2020/10/17 01:57:16 [emerg] 333#333: host not found in upstream "PSQLA" in /etc/nginx/conf.d/admin.conf:5
nginx: [emerg] host not found in upstream "PSQLA" in /etc/nginx/conf.d/admin.conf:5

如何使用容器中的 nginx 并通过设置配置文件访问其他容器?

【问题讨论】:

标签: docker nginx containers


【解决方案1】:

尝试以下命令(按相同顺序)启动容器:

sudo docker create -e PGADMIN_DEFAULT_EMAIL=houzeyu2683@gmail.com -e PGADMIN_DEFAULT_PASSWORD=20121006 -p 5001:80 --name PSQLA dpage/pgadmin4
sudo docker create -p 80:80 -p 443:443 --link PSQLA:PSQLA --name Nginx nginx
sudo docker start PSQLA
sudo docker start Nginx 

现在编辑 Nginx 配置,您应该不会再遇到错误了。

Tl;博士

正如docker中提到的documentation

当您设置链接时,您会在源容器和接收容器之间创建一个管道。然后,接收者可以访问有关源的选定数据。

为了从Nginx容器访问PSQLA,我们需要将Nginx容器链接到PSQLA容器,而不是反过来。

现在的问题是:这有什么不同?

为此,我们需要了解--link 选项在 docker 中是如何工作的。 docker 将源容器的主机条目添加到/etc/hosts 文件中

我们可以在 Nginx 容器内的/etc/hosts 文件中验证这一点。它包含一个类似这样的新条目(在您的情况下,id 和 IP 可能不同):

172.17.0.4 PSQLA 1117cf1e8a28

此条目使Nginx 容器使用容器名称访问PSQLA 容器。

请参考这里以获得更好的理解:

https://docs.docker.com/network/links/#updating-the-etchosts-file

重要提示

正如Docker中提到的documentation

--link 标志是 Docker 的遗留功能。它最终可能会被删除。除非您绝对需要继续使用它,否则我们建议您使用用户定义的网络来促进两个容器之间的通信,而不是使用 --link。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2018-01-28
    • 2023-04-04
    • 2021-11-21
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多