macOS에서 X11 앱 시작(Docker+Xvfb+VNC)
1. 개요
macOS에서 X11 환경을 필요로 하는 앱을 실행하고 싶은 일, 가끔 없습니까? 난 있습니다.
macOS 상의 X11 환경(XQuartz)을 이용하는 것도 하나의 손입니다만, 좀더 간편하게 사용할 수 없는가와 Docker, Xvfb, VNC를 조합하는 방법을 시도해 보았습니다.
아직 상세한 검증은 실시하고 있지 않습니다만, 문제 없게 이용할 수 있을 것 같습니다.
2. 사용할 소프트웨어
이번 사용한 소프트웨어는 다음과 같습니다.
3. 환경
이번 시도한 환경은 다음과 같습니다.
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.5
BuildVersion: 18F132
$ docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:18:17 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:17:52 2019
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: v1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
$ docker image pull ubuntu:18.04
18.04: Pulling from library/ubuntu
Digest: sha256:d1d454df0f579c6be4d8161d227462d69e163a8ff9d20a847533989cf0c94d90
Status: Image is up to date for ubuntu:18.04
docker.io/library/ubuntu:18.04
$ docker container run --tty --rm ubuntu:18.04 cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
4. xeyes 실행하기
간단한 X11 앱으로 주목할만한
xeyes
명령을 실행해 보겠습니다.host$
는 호스트 시스템을, docker$
는 Docker 컨테이너 내에서 실행을 나타냅니다.4.1. 사전 준비
Docker 컨테이너를 시작하고 필요한 Ubuntu 패키지를 설치합니다.
xeyes
는 x11-apps
에 포함되어 있습니다.host$ docker container run --interactive --tty --rm --publish 5900:5900 ubuntu:18.04 /bin/bash
docker$ apt-get update
docker$ DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends xvfb x11vnc x11-apps
docker$ dpkg -l | grep -E "(xvfb|x11vnc|x11-apps)"
ii x11-apps 7.7+6ubuntu1 amd64 X applications
ii x11vnc 0.9.13-3 amd64 VNC server to allow remote access to an existing X session
ii x11vnc-data 0.9.13-3 all data files for x11vnc
ii xvfb 2:1.19.6-1ubuntu4.3 amd64 Virtual Framebuffer 'fake' X server
4.2. xeyes 시작
xvfb-run
명령을 통해 xeyes
를 실행합니다.xvfb-run
는 기본적으로 디스플레이 번호:99
로 가상 디스플레이를 만듭니다.또한 기본적으로 PID를 포함하는 임의의 인증 파일을 생성하지만 여기에서는
/tmp/xvfb-run
에 고정되어 있습니다.docker$ xvfb-run --auth-file /tmp/xvfb-run -- xeyes &
4.3. VNC 서버 시작
만든 가상 디스플레이에 액세스하기 위해 VNC 서버를 시작합니다.
이번에는 VNC 서버 중 하나
x11vnc
를 사용했습니다.docker$ x11vnc -display :99 -auth /tmp/xvfb-run
4.4. VNC 클라이언트에서 액세스
부팅된 VNC 서버에 VNC 클라이언트(뷰어)로 연결합니다. 이번에는 VNC 클라이언트 중 하나인 "TigerVNC Viewer v1.9.0"을 사용했습니다.
x11vnc
가 5900/tcp
에서 연결을 기다리고 있습니다.또한
docker container run
의 --publish
옵션으로 포트를 전달하므로 localhost
에 연결합니다.무사히 접속할 수 있어 마우스 커서의 위치에 따라 눈동자가 움직이는 것을 확인했습니다.
5. 발전
이번에는 단일의 X11 앱을 기동했습니다만, Fluxbox등 윈도우 매니저를 기동하는 것으로, 데스크탑 환경을 실현할 수도 있다고 생각합니다. (시험하지 않음)
또, X의 가상 디스플레이는 FFmpeg로 동영상을 촬영할 수도 있으므로, 동영상으로 테스트의 증빙(에비던스)을 기록하는 등의 용도에도 사용할 수 있을 것 같습니다. 꿈이 퍼지네요!
6. 참고
Reference
이 문제에 관하여(macOS에서 X11 앱 시작(Docker+Xvfb+VNC)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuyakato/items/55762a92f03506f583ee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)