Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 作为代理的Nginx容器_Ubuntu_Docker_Nginx_Proxypass - Fatal编程技术网

Ubuntu 作为代理的Nginx容器

Ubuntu 作为代理的Nginx容器,ubuntu,docker,nginx,proxypass,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/n

我最近开始学习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;
        }
    }
}
docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer
docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -P -d --link myportainer:myportainer nginx
由于容器启动期间出现错误,必须插入辅助线程连接。当我转到远程服务器的ip(比如:)时,我希望Portainer会出现,但什么也没有发生。我甚至没有收到回复的状态码

我错过了什么

亲切问候,,
Daniel

像这样运行您的
portainer
容器:

events {
    worker_connections 1024;
}
http {
    server {
        location / {
            proxy_pass http://localhost:9000;
        }
    }
}
docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer
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 {
        location / {
            proxy_pass http://localhost:9000;
        }
    }
}
docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer
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

远程主机上是否运行
nginx
容器?可能是由于配置错误,它确实停止了运行。它与Portainer运行在同一个远程主机上,我一直在监视和检查它——nginx容器正在运行。