На линуксовой машине (Debian Stretch) в Докере на 99-м экране запускается Xvfb, под которым открывается окно, которое ожидает нажатия OK:
xvfb-run -n 99 bash winetricks vcrun2005
Вхожу в тот же контейнер вторым bash-ем и запускаю x11vnc. Получаю ошибку:
# x11vnc -auth /home/root/.Xauthority -display :99 -rfbauth
26/02/2019 16:30:16 passing arg to libvncserver: -rfbauth
26/02/2019 16:30:16 x11vnc version: 0.9.13 lastmod: 2011-08-10 pid: 8655
No protocol specified
26/02/2019 16:30:16 XOpenDisplay(":99") failed.
26/02/2019 16:30:16 Trying again with XAUTHLOCALHOSTNAME=localhost ...
No protocol specified
26/02/2019 16:30:16 ***************************************
26/02/2019 16:30:16 *** XOpenDisplay failed (:99)
*** x11vnc was unable to open the X DISPLAY: ":99", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.
В чём проблема? Куда копать?
P.S. На x11vnc -find -rfbauth ругается «unrecognized option(s)»
Ответ нашел сам: надо явно указать файл authority для xvfb; кроме того, -rfbauth иногда нужно явно указывать имя дефолтного файла /root/.vnc/passwd
Остался без ответа второй вопрос: когда VNC-сервер запустится, как подключиться к нему с виндовой машины при помощи TightVNC? Указал IP хоста, дефолтный порт, но до ввода пароля (который в /root/.vnc/passwd контейнера) не доходит, пишет «No connection could be made because the target machine actively refused it.» Какие нужны дополнительные действия?
Пока нашёл следующее:
Запуская докер добавить к «docker run» что-то вроде "-p 5900:5900". Если контейнер уже запущен, выяснить его адрес на хосте командой
docker inspect keen_beaver | grep IPAddress
sudo /sbin/iptables -t nat -A DOCKER -p tcp --dport 5900 -j DNAT --to-destination 172.17.0.3:5900
После этого VNC-сервер будет виден на порту 5900.
И да, на этом порту что-то видно — curl servername:5900 отваливается не через 2 секунды, а через 22, и с ошибкой не «Connection refused», а «Timed out». Telnet тоже на этом порту что-то видит, но не получает ответа.
Но подключиться не получается. TightVNC пишет «A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.» noVNC выдаёт «Failed to connect to server» в браузере и коды 404 и 111 «Connection refused» в консоли.
В чём может быть дело?
Ответ 2: начало нормально отвечать после перезагрузки хоста.
Ещё выяснилось, что необходимо запускать x11vnc с ключами "-visual TrueColor" и "-forever" Первый нужен клиентам, не понимающим 8-битный цвет, второй — чтобы сервер не отключался при закрытии соединения с клиентом.