如何在 Ubuntu 上安装 Apache Guacamole 作为 Docker 容器如何在 Ubuntu 上安装 Apache Guacamole 作为 Docker 容器如何在 Ubuntu 上安装 Apache Guacamole 作为 Docker 容器如何在 Ubuntu 上安装 Apache Guacamole 作为 Docker 容器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 上安装 Apache Guacamole 作为 Docker 容器

在此页

  1. 先决条件
  2. 安装 Docker 引擎
  3. 安装 Docker Compose
  4. 下载 Apache Guacamole 服务器和客户端
  5. 启动 Apache Guacamole MySQL 容器
  6. 启动鳄梨酱服务器容器
  7. 启动 Guacamole 客户端容器
  8. 访问 Apache Guacamole 仪表板
  9. 结论

Apache Guacamole 是免费的开源无客户端远程桌面应用程序,允许您通过 Web 浏览器访问远程桌面和服务器计算机。支持VNC、RDP、SSH等标准协议,远程连接使用HTML5。它可以在大多数 Linux 发行版上运行,客户端可以在任何现代 Web 浏览器上运行。您不需要在系统上安装任何软件。只需浏览并连接到您的服务器上定义的任何远程服务器。

在本文中,我们将向您展示如何在 Ubuntu 22.04 上使用 Docker 安装 Apache Guacamole 服务器和客户端。

先决条件

  • 一台运行 Ubuntu 22.04 的服务器。
  • 在服务器上配置了根密码。

安装 Docker 引擎

始终建议将最新版本的 Docker 安装到您的服务器。

首先,使用以下命令安装所需的依赖项:

apt install ca-certificates curl gnupg lsb-release -y

安装所有依赖项后,使用以下命令添加 Docker GPG 密钥和存储库:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

接下来,更新存储库并使用以下命令安装 Docker 引擎包:

apt update -y
apt install docker-ce docker-ce-cli containerd.io -y

安装完成后,使用以下命令验证 Docker 版本:

docker --version

您应该得到以下输出:

Docker version 20.10.18, build b40c2f6

安装 Docker 组合

您还需要在服务器上安装 Docker Compose。您可以使用以下命令安装它:

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

接下来,使用以下命令验证 Docker Compose 版本:

docker-compose --version

您将获得以下输出:

docker-compose version 1.29.2, build 5becea4c

下载 Apache Guacamole 服务器和客户端

首先,您需要从 Docker 注册表下载 Apache Guacamole 服务器和客户端映像。

首先,使用以下命令下载服务器映像:

docker pull guacamole/guacd

您应该看到以下输出:

Using default tag: latest
latest: Pulling from guacamole/guacd
4b7b4a8876e2: Pull complete 
4e542e9cf89d: Pull complete 
9741340fbbb2: Pull complete 
96fa725029d6: Pull complete 
0f0a6df13f2a: Pull complete 
a4fa6e99a790: Pull complete 
07365dfaa371: Pull complete 
Digest: sha256:efdc09beba21e2c5d7c8c77e8c6b95ffd173d75645c9c41b6024f5b835d2a034
Status: Downloaded newer image for guacamole/guacd:latest
docker.io/guacamole/guacd:latest

首先,使用以下命令下载客户端映像:

docker pull guacamole/guacamole

您应该看到以下输出:

Using default tag: latest
latest: Pulling from guacamole/guacamole
2b55860d4c66: Pull complete 
2ca45fc4c4ca: Pull complete 
0cd32add6672: Pull complete 
ac52cbbb8ca2: Pull complete 
7f7dc3a9f4cc: Pull complete 
5d7996a24402: Pull complete 
4819d3e4118d: Pull complete 
055afbac1f72: Pull complete 
23ee772344b7: Pull complete 
e44569de6126: Pull complete 
f7d7e8014b18: Pull complete 
Digest: sha256:8a8db8cf9f5359aa20547382213a42a720ea1c5fe86460ded727061e1995d9f2
Status: Downloaded newer image for guacamole/guacamole:latest
docker.io/guacamole/guacamole:latest

接下来,使用以下命令验证下载的图像:

docker images

您将获得以下输出:

REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
guacamole/guacd       latest    4086ac9e35a7   9 hours ago    271MB
guacamole/guacamole   latest    959856a45436   10 hours ago   432MB

启动 Apache Guacamole MySQL 容器

首先,您至少需要一个数据库容器用于 Apache Guacamole 身份验证。您可以使用以下命令下载并启动 MySQL 容器:

docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server

您将获得以下输出:

latest: Pulling from mysql/mysql-server
cdd8b07c6082: Pull complete 
c2f1720beca1: Pull complete 
39f143a8d6de: Pull complete 
118a8285b641: Pull complete 
b45cbcaf75c7: Pull complete 
d4574372e600: Pull complete 
1f565a3cbc52: Pull complete 
Digest: sha256:e30a0320f2e3c7b7ee18ab903986ada6eb1ce8e5ef29941b36ec331fae5f10b2
Status: Downloaded newer image for mysql/mysql-server:latest
c7a9309eac20a7d0bb6f0a16460bf2b678aae741c201efae8974ea64a3736595

接下来,创建一个目录来存储数据库:

mkdir -p /opt/guacamole/mysql

接下来,使用以下命令生成 MySQL 初始化脚本:

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql

接下来,将 Guacamole MySQL 数据库初始化脚本复制到 MySQL Docker 容器中:

docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d

接下来,使用以下命令连接到 MySQL 数据库容器:

docker exec -it guacamoledb bash

连接后,您将获得以下 shell:

bash-4.4# 

接下来,使用以下命令列出 MySQL 初始化脚本:

cd /docker-entrypoint-initdb.d/
ls

输出:

01-initdb.sql

接下来,使用以下命令连接到 MySQL shell:

mysql -u root -p

接下来,将数据库切换到 guacd 并初始化 Guacamole 数据库:

use guacdb;
source 01-initdb.sql;

接下来,使用以下命令验证所有表:

show tables;

您将获得以下输出:

+---------------------------------------+
| Tables_in_guacdb                      |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+

接下来,创建一个管理员用户并使用以下命令设置密码:

create user '%';

接下来,使用以下命令刷新权限并退出 MySQL shell:

flush privileges;
exit;

接下来,使用以下命令退出 MySQL 容器:

exit

您现在可以使用以下命令验证正在运行的容器:

docker ps

您应该在以下输出中看到 MySQL 容器:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS                   PORTS                       NAMES
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   2 minutes ago   Up 2 minutes (healthy)   3306/tcp, 33060-33061/tcp   guacamoledb

您还可以使用以下命令检查容器日志:

docker logs guacamoledb

您将获得以下输出:

[Entrypoint] Starting MySQL 8.0.30-1.2.9-server
2022-10-02T11:31:52.589985Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2022-10-02T11:31:52.592352Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 1
2022-10-02T11:31:52.602604Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-02T11:31:52.875859Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-02T11:31:53.131572Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-10-02T11:31:53.131639Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-10-02T11:31:53.163561Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-10-02T11:31:53.163648Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.30'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.

启动鳄梨酱服务器容器

现在,运行以下命令启动 Guacamole 服务器容器:

docker run --name guacamole-server -d guacamole/guacd

您可以使用以下命令检查容器日志:

docker logs --tail 10 guacamole-server

您将获得以下输出:

guacd[7]: INFO:	Guacamole proxy daemon (guacd) version 1.4.0 started
guacd[7]: INFO:	Listening on host 0.0.0.0, port 4822

要检查正在运行的容器,请使用以下命令:

docker ps

您将获得以下输出:

CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                             PORTS                       NAMES
51b2efdab0db   guacamole/guacd      "/bin/sh -c '/usr/lo…"   26 seconds ago   Up 25 seconds (health: starting)   4822/tcp                    guacamole-server
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   3 minutes ago    Up 3 minutes (healthy)             3306/tcp, 33060-33061/tcp   guacamoledb

启动鳄梨酱客户端容器

您还可以使用以下命令启动 Guacamole 客户端容器:

docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password -d -p 80:8080 guacamole/guacamole

接下来,使用以下命令验证正在运行的容器:

docker ps

您应该看到以下输出:

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                                 PORTS                                   NAMES
d4034a72bb69   guacamole/guacamole   "/opt/guacamole/bin/…"   58 seconds ago       Up 57 seconds                          0.0.0.0:80->8080/tcp, :::80->8080/tcp   guacamole-client
51b2efdab0db   guacamole/guacd       "/bin/sh -c '/usr/lo…"   About a minute ago   Up About a minute (health: starting)   4822/tcp                                guacamole-server
c7a9309eac20   mysql/mysql-server    "/entrypoint.sh mysq…"   5 minutes ago        Up 5 minutes (healthy)                 3306/tcp, 33060-33061/tcp               guacamoledb

此时Guacamole容器启动,并监听80端口,可以通过以下命令查看:

ss -altnp | grep :80

您将获得以下输出:

LISTEN 0      4096         0.0.0.0:80        0.0.0.0:*    users:(("docker-proxy",pid=4006,fd=4))   
LISTEN 0      4096            [::]:80           [::]:*    users:(("docker-proxy",pid=4013,fd=4))   

访问 Apache Guacamole 仪表板

您现在可以使用 URL http://your-server-ip/guacamole 访问 Apache Guacamole Web 界面。您应该会看到鳄梨酱登录屏幕:

提供默认凭据:

用户:guacadmin

密码:guacadmin

然后,单击“登录”按钮。您应该会在以下屏幕上看到 Guacamole 仪表板:

结论

恭喜!您已经在 Ubuntu 22.04 服务器上使用 Docker 成功安装了 Apache Guacamole 服务器和客户端。您现在可以创建新连接并通过 Web 浏览器访问远程服务器。如果您有任何问题,请随时问我。

©2015-2025 艾丽卡 support@alaica.com