Dockerに構築したLinuxにリモートデスクトップで接続する

###### 前提
Windows10 Pro

###### 1. Windows側の設定
１．コントールパネル→アプリと機能からHyper-Vを有効にする。

２．Docker for Windowsをダウンロード、インストールする。

３．Window Power Shell を管理者権限で起動

４．`docker pull ubuntu`コマンドでubuntuのイメージを取得

５．以下のコマンドでubuntuを起動

```bash
docker run --name ubuntu-dev -it ubuntu /bin/bash
```

###### 2. Linux側の設定
６．パッケージリストの最新化

```bash
apt-get update
apt-get upgrade
```

７．xrdp（※）をインストール

```bash
apt-get install xrdp
```
※WindowsからLinuxにリモートデスクトップで繋げるソフト

８．lxde（※）をインストール

```bash
apt-get install lxde
```
※Linuxのデスクトップ環境

９．rootパスワードの変更
`passwd`

１０．vimのインストール

```bash
apt-get install vim
```

１１．最新版のxrdpをビルドするツールをインストール

```bash
apt-get install build-essential devscripts
```

１２．Buildスクリプトソース取得

```bash
cd ~
mkdir build
cd build
dget -u https://launchpad.net/ubuntu/+archive/primary/+files/xrdp_0.9.1-9.dsc
```

１３．Build準備

```bash
apt-get install autoconf automake debhelper libfuse-dev libjpeg-dev libopus-dev libpam0g-dev libssl-dev libtool libx11-dev libxfixes-dev libxrandr-dev nasm openssl pkg-config systemd x11-utils xserver-xorg-core xserver-xorg-dev  libfuse-dev ssl-cert
```

１４．以下のファイルをviで作成
vi /usr/include/X11/fonts/fontutil.h

```c
#ifndef _FONTUTIL_H_
#define _FONTUTIL_H_
#include <X11/fonts/FSproto.h>
extern int FontCouldBeTerminal(FontInfoPtr);
extern int CheckFSFormat(fsBitmapFormat, fsBitmapFormatMask, int *, int *,
			 int *, int *, int *);
extern void FontComputeInfoAccelerators(FontInfoPtr);
extern void GetGlyphs ( FontPtr font, unsigned long count,
			unsigned char *chars, FontEncoding fontEncoding,
			unsigned long *glyphcount, CharInfoPtr *glyphs );
extern void QueryGlyphExtents ( FontPtr pFont, CharInfoPtr *charinfo,
				unsigned long count, ExtentInfoRec *info );
extern Bool QueryTextExtents ( FontPtr pFont, unsigned long count,
			       unsigned char *chars, ExtentInfoRec *info );
extern Bool ParseGlyphCachingMode ( char *str );
extern void InitGlyphCaching ( void );
extern void SetGlyphCachingMode ( int newmode );
extern int add_range ( fsRange *newrange, int *nranges, fsRange **range,
		       Bool charset_subset );
#endif /* _FONTUTIL_H_ */
```

１５．debian/controlをviで修正

```bash
cd xrdp-0.9.1
vi debian/control
```

修正前
automake (>= 1.6), 
debhelper (>= 10),
修正後
automake (>= 1.1),
debhelper (>= 9.2), 

１６．debian/rulesをviで修正

```bash
vi debian/rules
```
--enable-ipv6 の行を削除

１７．パッケージの作成
「xrdp-0.9.1」ディレクトリで下記コマンドを実行

```bash
dpkg-buildpackage -r -uc -b
```

１８．buildディレクトリにdebファイルが2つ生成されるため、インストール

```bash
dpkg -i xorgxrdp_0.9.1-9_amd64.deb
dpkg -i xrdp_0.9.1-9_amd64.deb
```

１９．デスクトップセッションの設定

```bash
cd ~
echo lxsession -s LXDE -e LXDE > ~/.xsession
```

２０．日本語化モジュールのインストール

```bash
apt-get install ibus-mozc
apt-get install language-pack-ja-base language-pack-ja

update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
source /etc/default/locale

apt-get install unifont
apt-get install synaptic
apt-get install scim-anthy
apt-get install fcitx-anthy
```

２１．ubuntoを`exit`で終了

###### 3. Windows側の設定
２２．デスクトップ環境を構築したubuntuコンテナをcommit

```bash
docker commit ubuntu-dev ubuntu-desktop
```

２３．ポート転送して起動

```bash
docker run --name ubuntu-desktop -p 13389:3389 -it ubuntu-desktop /bin/bash
```

###### 4. Linux側の設定
２４．xrdpの起動

```bash
/etc/init.d/xrdp stop
/etc/init.d/xrdp start
```

###### 5. Windows側の設定
２５．PowerShellを別途起動して、以下のコマンドでIPアドレスを確認

```bash
docker inspect --format '{{ .NetworkSettings.IPAddress }}'  ubuntu-desktop
```

２６．[リモートデスクトップ接続]でIPアドレスを指定して接続
リモートデスクトップのアドレスに、「IPアドレス:13389」と入力

２７．rootでログイン

⇒ [Ubuntuの初期設定](https://qiita.com/rs_/items/7305c5bee18ac4666d73)

以上