Dockerへvnc接続する

# 目的
Dockerへvnc接続した際の備忘録です

# Dockerhub上のイメージを確認

以下を参考にさせて頂きます

> [queeno/ubuntu-desktop](https://hub.docker.com/r/queeno/ubuntu-desktop/)
> Ubuntu Desktop Dockerfile
> Docker container for Ubuntu 16.04 including ubuntu-desktop and vncserver.

# Dockerhub上のイメージを起動してvnc接続

docker runします

```
docker run -p 5901:5901 queeno/ubuntu-desktop
...
16/05/20 15:06:31 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
16/05/20 15:06:31 Listening for VNC connections on TCP port 5901
...
```

その後、vnc接続します
> vnc://<host>:5901 via VNC client.
> The VNC password is password.

Macの場合は、finder→移動→サーバへ接続→vnc://localhost:5901 へ接続する
<img width="212" alt="スクリーンショット 2020-05-16 23.36.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/79114cf8-cd95-a7ea-7cc1-b5e0256011b1.png">
<img width="252" alt="スクリーンショット 2020-05-16 23.36.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/16f0feba-0b80-5a34-c30c-f4fb990fa2dd.png">

接続できました

<img width="356" alt="スクリーンショット 2020-05-16 23.36.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/d2df711c-0375-c62a-2771-6f4da28f8f49.png">

xeyesコマンドで目を出せました

<img width="357" alt="スクリーンショット 2020-05-16 23.37.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/4bdacabf-8227-5498-200d-3cecdd8e255d.png">

# Dockerfileからbuildしてコンテナ起動する

起動したdockerイメージのDockerfileは以下のようです
> [queeno/docker-ubuntu-desktop](https://github.com/queeno/docker-ubuntu-desktop)

git cloneで取得する

```
$ git clone https://github.com/queeno/docker-ubuntu-desktop
$ cd docker-ubuntu-desktop
```

Dockerfileを確認する

```dockerfile:Dockerfile
FROM ubuntu:16.04

ENV DEBIAN_FRONTEND noninteractive
ENV USER root

RUN apt-get update && \
    apt-get install -y --no-install-recommends ubuntu-desktop && \
    apt-get install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal && \
    apt-get install -y tightvncserver && \
    mkdir /root/.vnc

ADD xstartup /root/.vnc/xstartup
ADD passwd /root/.vnc/passwd

RUN chmod 600 /root/.vnc/passwd

CMD /usr/bin/vncserver :1 -geometry 1280x800 -depth 24 && tail -f /root/.vnc/*:1.log

EXPOSE 5901
```

コマンドラインから実行するのは煩わしいのでdocker-compose.ymlを用意

```dockerfile:docker-compose.yml
version: '3.3'
services:
    test:
        build:
          context: .
          dockerfile: Dockerfile
        container_name: ubuntu1604-desktop-test
        image: 'ubuntu1604-desktop-test:latest'
        ports:
          - 5901:5901
        stdin_open: true
```

その後、docker build & docker run を実行する

```
$ docker-compose build
$ docker-compose run
...
ubuntu1604-desktop-test | 16/05/20 15:35:50 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
ubuntu1604-desktop-test | 16/05/20 15:35:50 Listening for VNC connections on TCP port 5901
...
```

再び、vnc接続してログインできる事を確認
> vnc://<host>:5901 via VNC client.

<img width="358" alt="スクリーンショット 2020-05-17 0.42.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/5b867e31-ddc1-ac31-415d-e1f30e7a8a27.png">


# 参考
[dockerで手軽にLinuxデスクトップ環境を試せる！](https://kokensha.xyz/docker/access-headless-docker-linux-desktop-container-via-vnc/#Ubuntu_Desktop)
[queeno/ubuntu-desktop](https://hub.docker.com/r/queeno/ubuntu-desktop/)
[queeno/docker-ubuntu-desktop](https://github.com/queeno/docker-ubuntu-desktop)