此页面介绍了启用 VNC 的 Docker-OSX 变体,这些变体允许远程图形访问您的 macOS 虚拟机。与使用 X11 转发的标准 Docker-OSX 容器不同,VNC 镜像通过 VNC 协议提供平台独立的远程访问,使其适用于无头服务器、远程管理和 CI/CD 环境。
启用 VNC 的 Docker-OSX 镜像使您能够:
有关标准 Docker-OSX 镜像(无 VNC)的信息,请参阅基础镜像和裸机镜像。
启用 VNC 的镜像在标准 Docker-OSX 架构之上添加了 TigerVNC,在容器内创建了可访问的虚拟显示。
来源:vnc-version/Dockerfile101-107 vnc-version/Dockerfile109-114
Docker-OSX 提供两种启用 VNC 的变体:
标准 VNC 镜像构建在 sickcodes/docker-osx:latest 之上,并包含完整的 macOS 安装过程和 VNC 访问。这最适合希望从全新的 macOS 安装开始的用户。
裸机 VNC 镜像基于 sickcodes/docker-osx:naked,要求您提供自己的磁盘镜像。此变体非常适合那些已经创建和配置了 macOS 磁盘镜像并希望添加 VNC 功能的用户。
来源:vnc-version/Dockerfile73-74 vnc-version/Dockerfile.nakedvnc33-34
构建标准 VNC 镜像
构建过程将生成一个随机的 VNC 密码,并在构建结束时显示。请务必记下此密码,因为您需要它来进行连接。
构建裸机 VNC 镜像
来源:vnc-version/Dockerfile22-25 vnc-version/Dockerfile.nakedvnc22
来源:vnc-version/Dockerfile29 vnc-version/Dockerfile.nakedvnc26-30
Docker-OSX VNC 镜像支持三种主要的连接方法,每种方法都有不同的安全含义:
来源:vnc-version/Dockerfile36-54
当您在本地计算机上运行 Docker-OSX 时,可以使用任何 VNC 客户端直接连接到 localhost:8888。此方法使所有流量都保留在您的本地系统上,是最安全的选择。
为了安全地访问远程 Docker-OSX 实例
创建到远程服务器的 SSH 隧道
将您的 VNC 客户端连接到 localhost:8888 - 连接将通过 SSH 安全地隧道传输到您的远程服务器。
可以直接连接到 remote-host:8888,但这非常不安全,因为 VNC 流量默认未加密。此方法仅应用于受信任的网络或用于测试目的。
来源:vnc-version/Dockerfile36-63
使用启用 VNC 的 Docker-OSX 镜像时,请注意这些安全注意事项:
未加密流量:VNC 默认不加密流量。远程连接请务必使用 SSH 隧道。
密码限制:VNC 密码限制为 8 个字符,并且以可能被泄露的方式传输。
端口暴露:避免将 VNC 端口(8888)暴露给公共互联网。使用防火墙规则限制访问。
账户安全:请记住,任何拥有 VNC 访问权限的人都可以访问您的 macOS 账户、App Store 以及潜在的敏感信息。
来源:vnc-version/Dockerfile56-63
如果您需要在容器创建后检索 VNC 密码
来源:vnc-version/Dockerfile64-68 vnc-version/Dockerfile120-124 vnc-version/Dockerfile.nakedvnc200-204
两个 VNC 镜像变体都配置了默认的显示分辨率 1920x1080 像素。这可以通过裸机 VNC 变体中的环境变量进行自定义。
来源:vnc-version/Dockerfile105 vnc-version/Dockerfile112 vnc-version/Dockerfile.nakedvnc136-138
Docker-OSX 中 VNC 的实现使用了以下组件:
该实现创建一个虚拟 X 显示 (:99),在此显示上启动 Xvnc 服务器,然后将 QEMU macOS 输出指向此虚拟显示。
来源:vnc-version/Dockerfile109-114 vnc-version/Dockerfile116-118 vnc-version/Dockerfile.nakedvnc191-204
docker psdocker exec <container-id> ps aux | grep vncdocker port <container-id>telnet localhost 8888docker exec <container-id> ps aux | grep qemudocker exec <container-id> bash -c "killall Xvnc && /usr/bin/Xvnc -geometry 1920x1080 -rfbauth ~/.vnc/passwd :99 &"-e WIDTH=1280 -e HEIGHT=720--cpus=4 --memory=8g-e EXTRA="..." 添加适当的 QEMU 标志启用 VNC 的 Docker-OSX 镜像提供了一种灵活的方式来远程访问 macOS 虚拟机,而无需 X11 转发。无论您是在无头服务器上运行,需要远程访问,还是正在设置自动化测试,这些镜像都提供了一个方便的解决方案,并具有各种安全选项以满足您的需求。
在生产环境中实施支持VNC的Docker-OSX时,请务必遵循本文档中概述的安全最佳实践,以保护您的macOS虚拟机免受未经授权的访问。