使用nginx容器管理其他容器



如何使用容器中的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
    

在管理员中。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并使用设置配置文件访问其他容器?

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

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;dr

如docker文档中所述:

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

为了从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-etchosts文件

重要提示

如Docker文档中所述:

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

相关内容

最新更新