【问题标题】:Docker, varnish, Connection reset by peerDocker,清漆,由对等方重置连接
【发布时间】:2015-03-08 16:18:38
【问题描述】:

我只是想使用 Docker 设置一个 Web 服务器。 我有 3 个不同的容器:

  • jprjr/php-fpm

    sudo docker run --name c_php-fpm -v $HOME/data/webstack/www:/srv/http:ro -p 9000:9000 -d jprjr/php-fpm

  • nginx

    sudo docker run --name c_nginx -v $HOME/data/webstack/www:/usr/share/nginx/html:ro -p 8080:80 --link c_php-fpm:c_php-fpm -d nginx nginx

  • jacksoncage/清漆

    sudo docker run --name c_varnish -i -d -p 80:80 --link c_nginx:c_nginx -e VARNISH_BACKEND_PORT=80 -e VARNISH_BACKEND_IP=c_nginx jacksoncage/varnish

PHP 和 nginx 工作正常,但是 varnish 有错误:

curl -I http://localhost/index.html curl: (56) Recv failure: Connection reset by peer

sudo docker ps返回:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4ee21c4a80e2 jacksoncage/varnish:latest "/bin/bash" 25 minutes ago Up 25 minutes 0.0.0.0:80->80/tcp c_varnish
4dcc7babd92c nginx:latest "nginx" 16 hours ago Up 48 minutes 443/tcp, 0.0.0.0:8080->80/tcp c_nginx
3c0f8c1d634c jprjr/php-fpm:latest "php-fpm -F" 16 hours ago Up 48 minutes 0.0.0.0:9000->9000/tcp c_php-fpm

sudo docker logs c_varnish 不返回任何内容。

谢谢!

【问题讨论】:

  • 我还在另一个应用程序上得到了“对等连接重置”,因为我的服务器(在容器内运行)只在本地主机上监听。你可以通过docker exec -it varnish bash 进入 Varnish 容器并在里面尝试curl -I http://localhost/index.html 吗?
  • 感谢您的回答,我遇到以下错误:curl: (7) Failed to connect to localhost port 80: Connection refused.
  • 这意味着 Varnish 并没有真正监听容器内的 80 端口。尝试手动启动./start.sh 并检查错误。顺便说一句,我之前的命令应该是 docker exec -it c_varnish bash(不是 varnish)。
  • 返回:Backend host '"${VARNISH_BACKEND_IP}"' could not be resolved to an IP address: Servname not supported for ai_socktype (Sorry if that error message is gibberish.) ('input' Line 8 Pos 13) .host = "${VARNISH_BACKEND_IP}"; ------------#######################- In backend specification starting at: ('input' Line 7 Pos 1) backend default { #######---------- Running VCC-compiler failed, exit 1 VCL compilation failed Cannot open /var/lib/varnish/4ee21c4a80e2/_.vsm: No such file or directory

标签: php nginx docker varnish


【解决方案1】:

与 Varnish VCL 文件相关的容器的当前映像中存在一个错误,在后端配置中不再接受环境变量:https://github.com/jacksoncage/varnish-docker/issues/2

要解决这个问题,请从https://github.com/jacksoncage/varnish-docker 获取原始 Dockerfile 和相关文件,应用 https://github.com/jacksoncage/varnish-docker/pull/3/commits 中的补丁并使用重建映像

sudo docker build -t jacksoncage/varnish .

您应该能够在生成的图像正常运行的情况下运行新容器。

【讨论】:

  • 感谢@dukebody,补丁现已提交到master中,并且一个不使用varnish配置中的环境变量的新版本现在可以在docker hub上使用,请通过docker pull jacksoncage/varnish下拉
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2020-12-22
  • 2014-04-27
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多