tutorials
docker
ubuntu
linux
cuda
GPU
NVIDIA
python
deep learning
AI
run container 時加入 DISPLAY
、 XAUTHORITY
環境變數,設定 net
參數,將 x server
相關檔案掛載進 container
docker run -it -h $(hostname) -e DISPLAY=$DISPLAY -e XAUTHORITY=/tmp/xauth -v ~/.Xauthority:/tmp/xauth -v /tmp/.X11-unix:/tmp/.X11-unix --net=host -d {imageID_or_repo:Tag}
-h
: 將 container 的 host 設為和 local 相同 (因為 ~/.Xauthority
會和主機名稱綁在一起)-e
: 設定 container 環境變數指令
DISPLAY=$DISPLAY
: 將 container 內部的 DISPLAY
參數使用的顯示 port
設成和外部使用者同一個XAUTHORITY=/tmp/xauth
: 將 container 內部 X server
授權文件的 XAUTHORITY
參數設成和外部使用者同一個顯示授權文件-v
: 外部授權相關文件掛載進 container
~/.Xauthority
掛載進 container 的 /tmp/xauth
/tmp/.X11-unix
掛載進 container 的 /tmp/.X11-unix
--net
: 設定 container 連線方式,
host
: 和主機使用相同連線方式進入 container 後,使用 su {user_name}
切換為外部使用者 (會在 container 內開啟新 shell)
如果一開始 container 沒有外部使用者,則需要照 container 外面(local)的 $USER 跟 $UID, 在 docker 裡面也建立一個同名同代號的 user: useradd -m -s /bin/bash -u {$UID} {$USER}