作为代理的 Nginx 容器

Nginx container acting as a proxy

我最近开始学习 Docker 并且发现了一个名为 Portainer 的工具来管理 Docker 容器和图像。我将它 运行 作为远程服务器上的容器,但它使用端口 9000,我想将其更改为 80,所以我考虑使用代理。我决定使用 Nginx(我以前从未使用过)作为容器。我使用以下指令启动 Nginx:

docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -P -d nginx

和 /var/nginx/conf/nginx.conf 文件如下所示:

events {
    worker_connections 1024;
}
http {
    server {
        location / {
            proxy_pass http://localhost:9000;
        }
    }
}
由于容器启动期间出错,必须插入

worker_connections。当我转到我的远程服务器的 ip(比如:http://ip.of.my.server/)时,我希望 Portainer 会出现,但没有任何反应。我什至没有得到响应的状态代码。

我在这里错过了什么?

亲切的问候, 丹尼尔

运行 你的 portainer 容器是这样的:

docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer

然后 运行 nginx 这样:

docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -P -d --link myportainer:myportainer nginx

在你的 nginx 配置中使用这个:

events {
    worker_connections 1024;
}
http {
    server {
        listen 80;

        location / {
            proxy_pass http://myportainer:9000;
        }
    }
}

上面的命令也应该可以解决问题,从长远来看,它会更容易使用 docker-compose:

你的 docker-compose.yml 应该是这样的:

version: "2"

services: 

  proxy:
      image: nginx:latest
      container_name: proxy
      ports:
       - "80:80"
      volumes:
       - /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf

  portainer:
      image: portainer/portainer
      container_name: myportainer

那你就运行docker-compose up -d