我在带有 Docker 19.03 的 CentOS 8.1 上使用 Docker 安装了 Apache Guacamole。
我按照此处描述的步骤操作:
我像这样启动容器:
# mysql container
docker run --name guacamole-mysql -e MYSQL_RANDOM_ROOT_PASSWORD=yes -e MYSQL_ONETIME_PASSWORD=yes -d mysql/mysql-server
# guacd container
docker run --name guacamole-guacd -e GUACD_LOG_LEVEL=debug -d guacamole/guacd
# guacamole container
docker run --name guacamole-guacamole --link guacamole-guacd:guacd --link guacamole-mysql:mysql -e MYSQL_DATABASE=guacamole -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=password -d -p 8080:8080 guacamole/guacamole
一切顺利,我能够在端口 8080 上访问 Guacamole Web 界面。我在端口 5900 上配置了一个与另一台机器的 VNC 连接。不幸的是,当我尝试使用该连接时,我在 Web 界面中收到以下错误:
“鳄梨调味酱服务器发生内部错误,连接已终止……”
我也查看了日志,在鳄梨酱日志中我发现了这个:
docker logs --tail all -f guacamole-guacamole
...
15:54:06.262 [http-nio-8080-exec-2] ERROR o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Creation of WebSocket tunnel to guacd failed: End of stream while waiting for "args".
15:54:06.685 [http-nio-8080-exec-8] ERROR o.a.g.s.GuacamoleHTTPTunnelServlet - HTTP tunnel request failed: End of stream while waiting for "args".
我确定目标机器(运行 VNC 服务器)没问题。我可以从 VNC 客户端和我之前安装的另一个较旧的鳄梨酱(不使用 Docker)连接到它。
我的容器看起来也不错:
docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad62aaca5627 guacamole/guacamole "/opt/guacamole/bin/…" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp guacamole-guacamole
a46bd76234ea guacamole/guacd "/bin/sh -c '/usr/lo…" About an hour ago Up About an hour 4822/tcp guacamole-guacd
ed3a590b19d3 mysql/mysql-server "/entrypoint.sh mysq…" 2 hours ago Up 2 hours (healthy) 3306/tcp, 33060/tcp guacamole-mysql
我连接到 guacamole-guacamole 容器并 ping 了另外两个容器:guacamole-mysql 和 guacamole-guacd。两者看起来都很好并且可以到达。
docker exec -it guacamole-guacamole bash
root@ad62aaca5627:/opt/guacamole# ping guacd
PING guacd (172.17.0.2) 56(84) bytes of data.
64 bytes from guacd (172.17.0.2): icmp_seq=1 ttl=64 time=0.191 ms
64 bytes from guacd (172.17.0.2): icmp_seq=2 ttl=64 time=0.091 ms
root@ad62aaca5627:/opt/guacamole# ping mysql
PING mysql (172.17.0.3) 56(84) bytes of data.
64 bytes from mysql (172.17.0.3): icmp_seq=1 ttl=64 time=0.143 ms
64 bytes from mysql (172.17.0.3): icmp_seq=2 ttl=64 time=0.102 ms
看起来鳄梨酱本身和 guacd 之间存在通信问题。这就是我完全陷入困境的地方。
编辑
我在 CentOS 7 上尝试过,我遇到了同样的问题。
我也按照@BatchenRegev 的建议尝试了这个解决方案https://github.com/boschkundendienst/guacamole-docker-compose但我又遇到了同样的问题。