주위: 창을 그릴 수 없어서 곤란할 때

2010/03/09 수정 가필

멋진 창구를 만들고 싶어요, YO.


기계 학습을 할 때 matplotlib 같은 도구로 학습 진도를 멋지게 쓰고 싶지 않습니까?
하고 싶어요.
그래서 저는 Doker 주위에 창을 자주 설정하고 이것도 위에 자주 걸어요. 그래서 이 글을 정리하고 싶어요.또 다른 예가 있다!무슨 문제가 있으면 사양하지 말고 저에게 알려주세요.공부하다

이 창 그리기

  • X창 시스템 사용
  • xexeyes가 할 수 있다면 기본적으로 문제가 없기 때문에 목표는 각 환경에서 모두 할 수 있다는 것이다.
  • 이른바 X창 시스템


    사용하기 전까지는 몰랐지만 고마워요.
    나는 아래의 이해로 사용했다.
  • 윈도우 시스템(GUI를 통한 소프트웨어 사용)의 일종
  • UNIX 시스템 표준
  • 클라이언트 서버 시스템 사용
  • 클라이언트 서버 시스템이 뭐예요!!!
    이게 정보과인 거 보통 아시나요?
    몰라요.그래서 어떻게 총괄하고 이해합니까?
    조작하는 쪽은 X 클라이언트이고 실제 운행 환경이 있는 쪽은 X 서버다.

    docker 용기와 docker를 움직이는 PC로 이것을 다시 포착하면 다음과 같다.

    마치 현지 환경에서 만지작거리는 것 같지만, 사실은 현지와 컨테이너 사이의 통신이다.
    그래서 일반적인 방법으로는 그릴 수 없다.
    이를 바탕으로 각자의 상황에 맞게 환경을 구축하고 싶다.

    장소0: 원래 하던 대로 못하면 문제 없어!


    Mac을 사용하는 경우 터미널을 열고 다음과 같이 입력합니다.
    xeyes
    
    아래가 나오면 대박!단계 1로 이동합니다.

    만약 안 된다면 다음과 같은 가능성을 고려할 수 있다.
    -Xeyes가 설치되어 있지 않음(-bash:xexyes: 명령을 찾을 수 없음)→xexyes 설치 등을 통해 검사하고 실행하십시오.
    - (linux를 사용할 때) 기본적으로 그려지지 않은 것으로 설정할 수 있으므로 변경이 필요합니다.다음을 시도해 보십시오.
    #vimをインストールした上で端末で以下を実行
    sudo vi /etc/X11/xinit/xserverrc
    ---vimエディタ内---
    #!/bin/sh
    exec /usr/bin/X tcp -nolisten "$@" <-右のようになってるのでここから-nolistenを消して保存
    ----------------
    
    sudo vi /etc/lightdm/lightdm.conf
    ---vimエディタ内---
    [seatDefaults]
    Xserver-allow-tcp=true <-デフォでは何も書いてないはずなのでこの行を追記
    -----------------
    
    위 단계 이후 PC 재부팅
    터미널에서 다음과 같은 조작을 실행하다
    xhost +
    export DISPLAY=(XクライアントのIPアドレス):0.0
    
    여기 와서 다시 해보세요.귀여운 눈을 그려줄 거예요.

    상황 1: xexyes에서도 docker 컨테이너에 그리지 않음


    이 경우 컨테이너를 다시 만들 수밖에 없다.
    GUI에 그림을 그려야 할 때, docker run을 그릴 때는 반드시 이것을 설정해야 한다.
    docker run -it --net host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix --name hogehoge hoge-image /bin/bash
    
    다음은 각 명령의 역할이다
    --net host : ホストPCのネットワークスタックをコンテナ内で利用する
    -e DISPLAY=$SIDPLAY : ホストのディスプレイ変数をコンテナのディスプレイ変数に入れる
    -v /tmp/.X11-unix/:/tmp/.X11-unix : ソケットが入っているディレクトリを同名同構成のディレクトリとしてコンテナにバインド
    
    처음에는 왠지 로컬 PC의 환경을 컨테이너에 복제한 것 같았다.
    위의 명령을 사용하여 용기를 만든 후 용기에서 Xeyes 조작을 할 수 있는 환경을 만듭니다.
    sudo apt install xorg
    sudo apt install openbox
    
    상기 순서에 따라
  • 용기 밖
  • xhost local:
    export DISPLAY=:0.0
    
  • 용기 내
  • xeyes   --->SUCCESS!!!(のはず)
    
    길다.

    상황2:teraterm 등 ssh로 연결된 PC에서 컨테이너를 이동하여 그릴 수 없을 때


    바로 이때이다

    이렇게 하려면 용기를 만들 때 따로 설정해야 한다.
    docker run -it --net host -e DISPLAY=$SIDPLAY -v $HOME/.Xauthority:/root/.Xauthority --name hogehoge hoge-image /bin/bash
    
    다음은 아까와 다른 지령의 작업이다.바인딩된 물건이 다르군요.
    -v $HOME/.Xauthority:/root/.Xauthority : ホスト側ユーザの.Xauthorityをコンテナのrootと共有する
    
    이렇게 하면 컨테이너를 만드는 기초 위에서 용기에 xexyes의 환경을 형성할 수 있다면 반드시 그릴 수 있다.

    장소3: Mac가 클라이언트 서버인 경우 설정이 필요합니다.


    모두 여기에 쓰시오.대단히 감사합니다
    https://gist.github.com/asufana/229cdac01fccee1a7d32ca8b5d7cfee6
    1, 2에 부딪히면 리눅스 윈도 기기에서 놀아서 잘 모르겠는데 맥의 설정이 좀 특이해요.맹점

    장소4: 그래도 안돼!


    이 상황은 2의 파생이지만teraterm의 설정을 다시 고려하면 순조로운 상황이다.
  • teraterm 설정(S) 메뉴에서 SSH 전송(O)...
  • 화면의 [로컬 X 서버에 원격(X) 어플리케이션 표시] 확인란에 체크 표시
  • 설정(S) 메뉴에서 설정된 저장(S), 저장 설정
  • 저장 후 teraterm
  • 을 다시 시작합니다.
    그렇지 않으면,
  • 용기 밖
  • xhost +
    
  • 용기 내
  • export DISPLAY=:0.0
    
    또한, 아니라고 여겨져 아무것도 없다면 용기 안팎에 필요한 물건(이하 근처 물건)이 있는지 확인하세요
    sudo apt install xauth
    sudo apt install xorg
    sudo apt install openbox
    
    나는 아직 이것도 할 수 없는 상황을 만난 적이 없다.
    안 되면 알려주세요.나는 매우 알고 싶다.

    끝말


    비록 시간이 길었지만 이것은 내가 기계 학습을 시작한 지 1년여 동안 모니터 주위의 문제이다.덕분에 요즘 환경이 상당히 잘 구축된 것 같다.누군가 나를 도울 수 있다면 다행이다.
    참조 링크
    Docker 컨테이너에서 GUI 응용 프로그램 시작
    SSH 클라이언트를 사용하여 SSH 연결에서 실행되는 Docker 컨테이너에서 실행되는 X 응용 프로그램의 GUI 표시
    Windows에 원격 Linux GUI 어플리케이션 표시 - X 서버 Xming
    자료에 사용된 기술/제품 표지의 링크 집합

    좋은 웹페이지 즐겨찾기