#docker #xvfb
#docker #xvfb
Вопрос:
У меня есть контейнер docker, который использует в качестве точки входа /bin/bash . Оказавшись в контейнере, я могу запустить xvfb таким образом:
Xvfb :1 -screen 0 1024x768x24 extension GLX render -noreset >> xsession.log 2>amp;1 amp;
Однако я бы хотел, чтобы эта команда выполнялась в Dockerfile, а затем вводилась в контейнер. Я хотел бы использовать /bin/bash в интерактивном режиме. Я пробовал несколько решений, но, похоже, ничего не работает.
Что я пробовал:
runxvfb.sh
#!/bin/sh
echo try
Xvfb :1 -screen 0 1024x768x24 extension GLX render -noreset >> xsession.log 2>amp;1 amp;
В Dockerfile
ADD runxvfb.sh /runxvfb.sh
RUN chmod a x /runxvfb.sh
CMD ["/runxvfb.sh; bin/bash"]
и несколько комбинаций этого подхода, но, похоже, он не работает. Оказавшись внутри контейнера, ps
показывает, что демон xvfb не запущен.
Комментарии:
1. это не оставит интерактивный bash открытым — изменил мой вопрос, чтобы было ясно, что я хочу попасть в /bin/ bash
2. Похоже, это тоже не работает. Мой runxvfb.sh файл #!/bin/ sh echo попробуйте Xvfb: 1 -screen 0 1024x768x24 расширение GLX render -noreset >> xsession.log 2> amp; 1 и я получаю «try», но после этого контейнер docker закрывается (см. Обновленный вопрос)
3. Вы не можете запускать фоновые процессы в Dockerfile; образ Docker содержит только файловую систему, а не какие-либо запущенные процессы. Виртуальная машина (с X-сервером, полной системой инициализации, стандартным рабочим столом Linux и либо демоном ssh, либо графической консолью) может лучше соответствовать этому варианту использования.