2回目の呼び出しでグラフィカルアプリケーションを開くことができません

2回目の呼び出しでグラフィカルアプリケーションを開くことができません

Xmingを実行しているローカルのWindowsシステムで、PuTTYを介してアクセスできるリモートシステム(Ubuntu 16.04を実行)のDockerコンテナで実行されるグラフィックアプリケーションを使用する必要があります。

xtermを実行し(PuTTY X11オプションを介して...)、コンテナを実行できるようにリモートホストに接続しました(.Xauthority設定ファイルに追加され、コンテナディスプレイを自分のモニタにマッピングします)。一度しかし、二度と二度とはないでしょう。私が使用する必要があるアプリケーションは、複数のウィンドウを開く必要がありますが、機能しないようです。

次のスクリプトを使用して、リモートホストでDockerコンテナを開きます。

#!/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で2番目のxtermを開こうとしたときに発生するエラーは次のとおりです。

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

ベストアンサー1

おすすめ記事