Arhn - архитектура программирования

docker vnc проблема со вторым подключением

Я создал образ докера. Затем я запускаю его с помощью команды docker run -d -p 5901:5901 -p 2222:22 dockerImageName. Докер работает нормально. После этого я подключаюсь к vnc, используя 0.0.0.0:5901. Он правильно подключается, и я получаю графический интерфейс.

Теперь я останавливаю докер, используя docker stop containerId. Теперь, если я попытаюсь повторно запустить контейнер с помощью команды docker start containerId, Docker появится, но когда я попытаюсь подключиться к vnc с помощью 0.0.0.0:5901, он скажет, что соединение неожиданно закрыто

Я использую этот образ https://hub.docker.com/r/thyrlian/android-sdk-vnc/

01.08.2018

  • Похоже, что-то не так с изображением. Он не обрабатывает остановку и запуск контейнера так, как вы хотите. Вам нужно будет поделиться своим Dockerfile или изображением, если вам нужна дополнительная помощь. 01.08.2018
  • я использую этот образ hub.docker.com/r/thyrlian/android- SDK-VNC 02.08.2018
  • Спасибо @Naman за использование изображения. Проблема именно в том, к чему обратился @King Chung Huang (пожалуйста, проверьте мои комментарии под его ответом). На самом деле два файла блокировки должны удаляться каждый раз при остановке контейнера. Сейчас я пытаюсь trap SIGTERM выполнить некоторые действия по очистке, чтобы удалить эти файлы блокировки. Изменения кода можно просмотреть здесь. Скоро я выпущу новый образ, включающий этот фикс. Пожалуйста, попробуйте. Большое спасибо. 27.09.2018
  • Кстати, в идеале, всякий раз, когда вы хотите запустить какой-либо тест на эмуляторе Android, вы должны убедиться, что он находится в чистом состоянии. Поэтому рекомендуется каждый раз запускать новый контейнер, а не использовать docker stop. Тем не менее, я исправил проблему, потому что я полагаю, что у вас может быть какая-то другая причина для этого случая. 27.09.2018

Ответы:


1

Похоже, что сервер VNC в образе thyrlian/android-sdk-vnc не запускается так же во второй раз, потому что файл блокировки остается позади, когда контейнер останавливается.

Если я создам и запущу контейнер из этого образа, вот что покажет vncserver-stderr.log.

▸ ~ docker run -d -p 5901:5901 -p 2222:22 --name android-sdk-vnc thyrlian/android-sdk-vnc
212b6de3d3ee71f221e7e190baaf650b779cf351a9c4654db19ef3402cdaa86f
▸ ~ docker exec android-sdk-vnc cat /var/log/supervisord/vncserver-stderr.log
xauth:  file /root/.Xauthority does not exist

New 'X' desktop is 212b6de3d3ee:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:1.log

После остановки и запуска одного и того же контейнера вот что показывает журнал.

▸ ~ docker stop android-sdk-vnc
android-sdk-vnc
▸ ~ docker start android-sdk-vnc
android-sdk-vnc
▸ ~ docker exec -it android-sdk-vnc cat /var/log/supervisord/vncserver-stderr.log
xauth:  file /root/.Xauthority does not exist

New 'X' desktop is 212b6de3d3ee:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:1.log


Warning: 212b6de3d3ee:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server 212b6de3d3ee:1

New 'X' desktop is 212b6de3d3ee:2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:2.log

Я не знаком с этим сервером VNC, но я предполагаю, что файл блокировки в /tmp/.X1-lock не позволяет ему работать так же, как в первый раз.

Я предлагаю зарегистрировать проблему в исходном репозитории GitHub. Вы можете найти его на странице Docker Hub для thyrlian/android-sdk-vnc. в разделе Исходный репозиторий.

02.08.2018
  • да, это проблема. Я понял это, когда вытащил другой образ докера с помощью vnc. Спасибо 02.08.2018
  • Спасибо за Ваш ответ. Действительно, проблема была вызвана файлом(ами) блокировки. На самом деле, помимо файла блокировки, к которому вы обращались: /tmp/.X1-lock, есть еще один: /tmp/.X11-unix/X1. Чтобы решить проблему, необходимо удалить оба файла блокировки. Я исправил проблему в своем репозитории кода, еще раз спасибо. 27.09.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..