Docker的安装就不赘叙了,宿主机器是windows/linux/macos都行
获取镜像
powershell
docker pull guacamole/guacamole # 前端客户端页面
docker pull guacamole/guacd # 后端服务端处理各种连接协议
docker pull mysql # 存储用户身份验证信息,还有其他数据和其他非数据库的方案可以选择启动容器
生成数据库初始化文件
powershelldocker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql启动mysql容器并导入初始化数据库文件
bashdocker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=guac -v ./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql mysql20s后再检查initdb.sql文件是否导入成功
bashdocker exec -it mysql bash -c "mysqlcheck --check --databases guac -uroot -p123456"成功的截图

启动guacd容器和guacamole容器
powershell# 启动guacd容器 docker run --name guacd -d guacamole/guacd # 启动guacamole容器 docker run --name guacamole --link guacd:guacd --link mysql:mysql -e MYSQL_DATABASE=guac -e MYSQL_USER=root -e MYSQL_PASSWORD=123456 -d -p 8080:8080 guacamole/guacamole
浏览器访问http://127.0.0.1:8080/guacamole即可,账号密码默认都为guacadmin

添加连接信息


注意: 如果是连接windows远程桌面使用rdp协议的话,记得指定认证方式为网络级别身份认证(NLA)且勾选忽略证书错误,否者连接不上


可以配置下nginx反向代理直接访问ip/域名或者可能需要改guacamole的配置文件来实现,懒得去看java的代码了
下面用Docker compose来实现一遍
删除之前的容器
powershelldocker rm -f guacamole guacd mysql新建
docker-compose.yml文件yamlservices: mysql: image: mysql:latest container_name: mysql environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: guac volumes: - ./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql # restart: always guacd: image: guacamole/guacd:latest container_name: guacd # restart: always guacamole: image: guacamole/guacamole:latest container_name: guacamole environment: MYSQL_DATABASE: guac MYSQL_USER: root MYSQL_PASSWORD: 123456 GUACD_HOSTNAME: guacd # 不用link,好像是因为compose启动的服务默认都是可以互相访问的,但是需要指定这两个HOSTNAME的环境变量,试了不用compose不指定link使用这两环境变量却没用 MYSQL_HOSTNAME: mysql ports: - "8080:8080" # restart: always # 使用nginx反向代理实现直接访问ip即可访问服务 nginx: image: nginx:latest container_name: nginx ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf生成数据库初始化文件
powershelldocker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql新建
nginx.conf文件bashevents {} http { server { listen 80; location / { proxy_pass http://guacamole:8080/guacamole/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }使用 Docker Compose 启动容器
powershelldocker-compose up -d浏览器访问http://127.0.0.1