gpt4 book ai didi

docker - Docker 容器中的 Apache Guacamole : Creation of WebSocket tunnel to guacd failed

转载 作者:行者123 更新时间:2023-12-02 18:26:48 33 4
gpt4 key购买 nike

我在带有 Docker 19.03 的 CentOS 8.1 上使用 Docker 安装了 Apache Guacamole。

我按照此处描述的步骤操作:

  • https://guacamole.apache.org/doc/gug/guacamole-docker.html
  • https://www.linode.com/docs/applications/remote-desktop/remote-desktop-using-apache-guacamole-on-docker/

  • 我像这样启动容器:

    # 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 界面中收到以下错误:

    “Guacamole 服务器发生内部错误,连接已终止……”

    我也查看了日志,在 Guacamole 日志中我发现了这个:

    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 客户端和我之前安装的另一个较旧的 Guacamole (不使用 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

    看起来 Guacamole 本身和 guacd 之间存在通信问题。这就是我完全陷入困境的地方。

    编辑

    我在 CentOS 7 上尝试过,我遇到了同样的问题。

    我也试过这个解决方案 https://github.com/boschkundendienst/guacamole-docker-compose正如@BatchenRegev 所建议的,但我又遇到了同样的问题。

    最佳答案

    我在centos下也遇到过同样的问题。

    我唯一的区别是我将数据库托管在单独的机器上,因为这都是云托管的,我希望能够随意销毁/重建 Guacamole 服务器。

    我结束了创建 docker-compose.yml 文件,因为它似乎效果更好。

    我遇到的其他问题:

  • 确保 guacd_hostname 是实际的机器主机名,而不是 127.0.0.1
  • 将 Selinux 设置为允许 httpd。

    sudo setsebool -P httpd_can_network_connect

  • 我的 docker-compose.yml 如下所示,用您自己的替换所有 {variables} 并更新文件,如果您也使用 sql 镜像。

    version: "2"
    services:
    guacd:
    image: "guacamole/guacd"
    container_name: guacd
    hostname: guacd
    restart: always
    volumes:
    - "/data/shared/guacamole/guacd/data:/data"
    - "/data/shared/guacamole/guacd/conf:/conf:ro"
    expose:
    - "4822"
    ports:
    - "4822:4822"
    network_mode: bridge

    guacamole:
    image: "guacamole/guacamole"
    container_name: guacamole
    hostname: guacamole
    restart: always
    volumes:
    - "/data/shared/guacamole/guacamole/guac-home:/data"
    - "/data/shared/guacamole/guacamole/conf:/conf:ro"
    expose:
    - "8080"
    ports:
    - "8088:8080"
    network_mode: bridge
    environment:
    - "GUACD_HOSTNAME={my_server_hostname}"
    - "GUACD_PORT=4822"
    - "MYSQL_PORT=3306"
    - "MYSQL_DATABASE=guacamole"
    - "GUACAMOLE_HOME=/data"
    - "MYSQL_USER=${my_db_user}"
    - "MYSQL_PASSWORD=${my_db_password}"
    - "MYSQL_HOSTNAME=${my_db_hostname}"

    关于docker - Docker 容器中的 Apache Guacamole : Creation of WebSocket tunnel to guacd failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60324139/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com