호스트 장치에서 실행하면 도커 컨테이너의 GUI 애플리케이션이 제대로 실행됩니다 docker run -it --net=host -e DISPLAY=$DISPLAY <image>
. xhost +
그러나 루트 없는 dockerd(docker cli를 사용할 때 env 사용)의 경우 DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
GUI 애플리케이션이 작동하지 않고 메시지가 표시됩니다.
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
그렇다면 호스트 디스플레이에 연결할 때 루트와 루트 없는 도커 컨테이너의 차이점은 무엇이며 루트 없는 도커 컨테이너에서 GUI를 사용하는 방법은 무엇입니까?
답변1
Rootless Docker에서는 --net=host
.
호스트 네트워크(
docker run --net=host
)도 RootlessKit에 의해 내부적으로 명명됩니다.
XServer 소켓을 공유하여 표시할 수 있습니다.
docker run -it --volume=/tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=$DISPLAY <image>
xhost +
루트 없는 컨테이너의 UID는 이미 호스트 시스템의 Docker 실행 사용자에 매핑되어 있으므로 필요하지 않습니다 .