docker local image 정리

docker에서 opencv를 사용하려고 했는데, 이미지를 띄우는 과정에서 오류가 났습니다.

No protocol specified
: cannot connect to X server :1

검색을 통해 구한 해결책은 다음과 같습니다.

  1. 현재 컨테이너 Commit하기

docker는 컨테이너를 띄운 상태에서 옵션을 변경할 수 없다. 따라서 새로운 옵션을 추가해서 새로 컨테이너를 띄워야 한다.

먼저 현재 띄워져 있는 컨테이너의 상태를 저장하기 위해 image로 commit하여 push합니다.

#commit
#docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그>
$docker commit tf3 eungbeean/tf3:latest

#push
# docker tag <이미지 이름>:<태그> <Docker 레지스트리 URL>/<이미지 이름>:<태그>
$ docker tag eungbean/deepo:latest
  1. 컨테이너를 띄우기 전 아래 명령어를 실행시킬 것
    xhost local:root
    
  2. docker 컨테이너를 새로 띄운다.

컨테이너를 띄울 때 옵션을 추가합니다.

-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev/snd:/dev/snd \
-e DISPLAY=unix$DISPLAY \

따라서 제가 실행시킨 명령어는 다음과 같습니다.

nvidia-docker run -it \
-h tf3 \
--device=/dev/video0:/dev/video0 \
--name tf3 \
-v /docker/data:/data \
-v /docker/config:/config \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev/snd:/dev/snd \
-e DISPLAY=unix$DISPLAY \
eungbean/deepo:latest
  1. 결과

181204-rmi-xhost

성공!!!

Comments

Eungbean Lee's Picture

About Eungbean Lee

Lee is a Student, Programmer, Engineer, Designer and a DJ

Seoul, South Korea https://eungbean.github.io