Nginx容器充当代理

时间:2018-06-08 16:44:35

标签: ubuntu docker nginx proxypass

我最近开始学习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会出现,但没有任何反应。我甚至没有得到回复的状态代码。

我在这里缺少什么?

亲切的问候, 丹尼尔

1 个答案:

答案 0 :(得分:2)

像这样运行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