두 번째 호출에서 그래픽 응용 프로그램을 열 수 없습니다

두 번째 호출에서 그래픽 응용 프로그램을 열 수 없습니다

Xming을 실행하는 로컬 Windows 시스템에서 PuTTY를 통해 액세스할 수 있는 원격 시스템(Ubuntu 16.04 실행)의 Docker 컨테이너에서 실행되는 그래픽 애플리케이션을 사용해야 합니다.

xterm을 실행하고(PuTTY X11 옵션을 통해...) 컨테이너를 실행할 수 있는 방식으로 원격 호스트에 연결했습니다( .Xauthority구성 파일에 추가되고 컨테이너 디스플레이를 내 모니터에 매핑함).한 번하지만 두 번 다시는 없을 거예요. 제가 사용해야 하는 애플리케이션은 여러 개의 창을 열어야 하는데 작동하지 않는 것 같습니다.

다음 스크립트를 사용하여 원격 호스트에서 도커 컨테이너를 엽니다.

#!/bin/bash

if [ $# -ne 1 ]; then
    echo "Usage: $0 container"
    exit 1
fi

nvidia-smi > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "##########################################"
    echo ""
    echo "Nvidia Display driver not installed"
    echo "You will not be able to run the CUDA container"
    echo ""
    echo "##########################################"
    VAR_DRIVER="TRUE"
fi

VAR_CONTAINER=$1
VAR_ARCH=$(uname -i | sed 's/_/-/g')
VAR_NVLIB=$(ldconfig -p | grep libnvcuvid.so | grep -m 1 ${VAR_ARCH} | cut -d "=" -f2 | sed 's/>//g')
VAR_NVPATH=$(dirname ${VAR_NVLIB})
VAR_DOCKER_VOL="-v /dev/bus/usb:/dev/bus/usb -v /home/${USER}/.qnx/license:/root/.qnx/license -v ${PWD}/display/socket:/tmp/.X11-unix -v ${PWD}/display/Xauthority:/root/.Xauthority"

#if [ -z ${VAR_DRIVER} ]; then
 #  VAR_DOCKER_VOL=${VAR_DOCKER_VOL}" -v "${VAR_NVPATH}":/usr/lib/nvidia"
#fi

CONTAINER_DISPLAY="0"
CONTAINER_HOSTNAME="docker_host"

mkdir -p display/socket
touch display/Xauthority

DISPLAY_NUMBER=$(echo $DISPLAY | cut -d. -f1 | cut -d: -f2)

AUTH_COOKIE=$(xauth list | grep "^$(hostname)/unix:${DISPLAY_NUMBER} " | awk '{print $3}')
xauth -f display/Xauthority add ${CONTAINER_HOSTNAME}/unix:${CONTAINER_DISPLAY} MIT-MAGIC-COOKIE-1 ${AUTH_COOKIE}

socat TCP4:localhost:60${DISPLAY_NUMBER} UNIX-LISTEN:display/socket/X${CONTAINER_DISPLAY} &

echo "Connecting docker display "${CONTAINER_HOSTNAME}":"${CONTAINER_DISPLAY}" to local display "$(hostname)":"${DISPLAY_NUMBER}
echo "Moving local Xauthority Cookie "${AUTH_COOKIE}" in "${PWD}"/display/Xauthority to /root/.Xauthority in docker container"

docker run -it --rm  -e DISPLAY=:${CONTAINER_DISPLAY} \
       ${VAR_DOCKER_VOL} \
       --hostname ${CONTAINER_HOSTNAME} \
       --shm-size 2g \
       --runtime=nvidia \
       -e NVIDIA_VISIBLE_DEVICES=all \
       -e NVIDIA_DRIVER_CAPABILITIES='compute,graphics,utility,video' \
       -e NVIDIA_REQUIRE_CUDA='cuda>=10.0 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=410,driver<411' \
       ${VAR_CONTAINER} \
       /bin/bash
rm -r display

나는 대략 다음 단계를 따랐다.원격 서버의 Docker 컨테이너에서 그래픽 애플리케이션 실행.

docker에서 두 번째 xterm을 열려고 할 때 발생하는 오류는 다음과 같습니다.

xterm: Xt error: Can't open display: :0

관련 정보