Я создал Dockerfile, который устанавливает Xvfb и firefox со всеми необходимыми зависимостями, и я могу создать контейнер с firefox, запущенным на DISPLAY =: 1 Xserver.
Когда я пытаюсьзапустить другой контейнер, второй контейнер не может запустить Xserver на DISPLAY =: 1.
sudo docker logs docker_serv2
xvfb-run: error: Xvfb failed to start
No protocol specified
Поэтому я проверил свои процессы с помощью ps aux
, и я был удивлен, увидев мой X-сервер в списке на моемhost.
xxx 11343 1.9 0.6 240260 47620 ? Sl 08:41 0:12 Xvfb :1 -screen 0 1280x720x24 -shmem -listen tcp -nolisten tcp -auth /home/xxx/.Xauthority
xxx 11350 18.7 4.2 2238084 326600 ? Sl 08:41 2:07 /usr/lib/firefox/firefox
Я использую эту команду для создания Xserver и запуска firefox в обоих контейнерах:
xvfb-run -n 1 -f ~/.Xauthority --server-args='-screen 0 1280x720x24 -shmem -listen tcp' firefox
Я понимаю, что процессы докера можно увидеть на хосте, поскольку это не такВМ, но я не понимаю, почему второй контейнер также не может запустить X-сервер на DISPLAY =: 1, так как два контейнера не связаны.
Разве они не изолированы от хост-системы?Я думал, что они будут использовать свою собственную минималистскую среду.
Вот моя run.sh
команда:
docker run -d --rm \
--net=host \
-v /dev/uinput:/dev/uinput \
-v /dev/input:/dev/input \
-v /run/udev:/run/udev \
--name docker firefox
Сначала я подумал, что --net=host
может быть источником моей проблемы, но это тольковлияет на конфигурацию сети, и у меня та же проблема без опции.
Другие опции -v
здесь, потому что я также играю с некоторыми инструкциями / dev / input и не важна в этой проблеме.
Итак, возможно ли запустить два разных контейнера, запустив два отдельных X-сервера на DISPLAY =: 1?