GMT@Docker


20160915

Virtualbox 上の CentOS7

1. docker 自体のインストール
2. GMT4.5 のインストール
3. GMT5 のインストール
4. Docker 環境へのアクセス
5. Docker memo

### 20190208 メモ

メモ作成時点では気にしていなかったのですが、東海大学のFTPは繋がらない事が、ままある様です。

ミラーじゃなく本家のFTPに差し替えてください。

ftp://ftp.soest.hawaii.edu/gmt/


## 1. docker 自体のインストール

root にて。

```
# yum install -y docker    # インストール
# chkconfig docker on      # 自動起動 ON
# service docker start     # デーモンスタート
```

- セキュリティを気にしない人は、この時点で、「ユーザーで実行可能に」を実行すれば、ユーザー権限で実行できる。


## 2. GMT4.5 のインストール

### Dockerfile の設置

以下の内容のファイルを適当な場所（/PATH/TO/tmp/）に Dockerfile という名前で保存

```
FROM ubuntu:15.10
RUN apt-get update
RUN apt-get install -y build-essential libnetcdf-dev libgdal1-dev libfftw3-dev libpcre3-dev
RUN apt-get install -y gdal-bin wget
RUN wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gshhg-gmt-2.3.4.tar.gz && \
    tar xzf gshhg-gmt-2.3.4.tar.gz
RUN mkdir -p /usr/local/share/gmt && mv gshhg-gmt-2.3.4 /usr/local/share/gmt/gshhg
RUN wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gmt-4.5.13-src.tar.bz2 && \
    tar xjf gmt-4.5.13-src.tar.bz2
RUN cd gmt-4.5.13 && \
    ./configure \
      --prefix=/usr/local \
      --with-gshhg-dir=/usr/local/share/gmt/gshhg \
      --enable-triangle \
      --disable-flock \
      --enable-eps && \
    make && \
    make install-gmt && \
    make install-data && \
    make install-man && \
    make install-doc
ENV PATH /usr/local/bin:$PATH
```

### 環境作成

root にて。

```
# cd /PATH/TO/tmp/
# docker build -t gmt:4.5.13 ./ >& make.log
```

これでしばらく待つと終了。warning は出るがビルド出来てるもよう。

### 動作確認

```
$ sudo docker run gmt:4.5.13 gmtdefaults -D | head -10
#
#   GMT-SYSTEM 4.5.13 [64-bit] Defaults file
#
#-------- Plot Media Parameters -------------
PAGE_COLOR      = white
PAGE_ORIENTATION    = landscape
PAPER_MEDIA     = a4+
#-------- Basemap Annotation Parameters ------
ANNOT_MIN_ANGLE     = 20
ANNOT_MIN_SPACING   = 0
```

## 3. GMT5 のインストール

### Dockerfile の設置

以下の内容のファイルを適当な場所（/PATH/TO/tmp/）に Dockerfile という名前で保存

```
FROM ubuntu:15.10
RUN apt-get update
RUN apt-get install -y ghostscript build-essential cmake libnetcdf-dev libgdal1-dev libfftw3-dev libpcre3-dev
RUN apt-get install -y gdal-bin wget
RUN wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gshhg-gmt-2.3.4.tar.gz && \
    tar xzf gshhg-gmt-2.3.4.tar.gz
RUN wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/dcw-gmt-1.1.1.tar.gz && \
    tar xzf dcw-gmt-1.1.1.tar.gz
RUN mkdir -p /usr/local/share/gmt && \
    mv gshhg-gmt-2.3.4 /usr/local/share/gmt/gshhg && \
    mv dcw-gmt-1.1.1   /usr/local/share/gmt/dcw
RUN wget ftp://ftp.soest.hawaii.edu/gmt/gmt-5.2.1-src.tar.xz && \
    tar xf gmt-5.2.1-src.tar.xz
RUN rm -rf ./gmt-5.2.1/build && mkdir ./gmt-5.2.1/build
RUN cd ./gmt-5.2.1/build && \
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
    make && make install
ENV PATH /usr/local/bin:$PATH
```

### 環境作成

root にて。

```
# cd /PATH/TO/tmp/
# docker build -t gmt:5.2.1 ./ >& make.log
```

これでしばらく待つと終了。

### 動作確認

```
$ sudo docker run gmt:5.2.1 gmtdefaults -D | head -10
#
# GMT 5.2.1 Defaults file
# vim:sw=8:ts=8:sts=8
# $Revision: 15178 $
# $LastChangedDate: 2015-11-06 11:45:03 +0100 (Fri, 06 Nov 2015) $
#
# COLOR Parameters
#
COLOR_BACKGROUND                = black
COLOR_FOREGROUND                = white
```

## 4. Docker 環境へのアクセス

gmt が入った前提で、 root にて

####  ワンラインで

単発コマンド実行したい場合は、起動とか考えなくても、以下の様に実行できる。

```
# docker run gmt:4.5.13 pscoast -Jm1:25000000 -R120/155/20/50 -W > map.eps
```

- 手元に map.eps ができればよい。
- 標準出力に出力されるものは期待通り挙動する。

### 起動

gmt4 の環境（コンテナ）の中に入る。

```
# docker run -it --name gmt4 gmt:4.5.13 /bin/bash
```

### コマンド実行

普通の *NIX と同じ。

```
# gmtdefaults -D
# pscoast -Jm1:25000000 -R120/155/20/50 -W > map.eps
# ps2raster -P map.jpg
```


### 環境から抜ける。

```
# exit
```

### 環境から手元へのファイルのコピー

```
# docker cp gmt4:/map.jpg .
```

### 次回から。

```
# docker start gmt4
# docker attach gmt4
```

で環境の中に入れる。


## 5. Docker memo

### images

```
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gmt                 4.5.13              914c64fe90c3        7 weeks ago         1.214 GB
gmt                 5.2.1               1fc2ed8ecfb0        7 weeks ago         1.415 GB
docker.io/ubuntu    15.10               9b9cb95443b5        7 weeks ago         137.2 MB
```

- 当たり前だけど、`ubuntu` イメージは勝手にダウンロードされている。
- イメージの削除は、`rmi`
    - コンテナが、利用してたりしてたら削除できない。

### コンテナ

```
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
4980c28a8e80        gmt:4.5.13          "/bin/bash"         8 minutes ago       Exited (0) 4 minutes ago                        gmt4
cf697bf723e9        gmt:5.2.1           "gmtdefaults -D"    30 minutes ago      Exited (0) 30 minutes ago                       gloomy_perlman
```

コンテナ自体は、容量が少ないので、放っておいてもよさそうだが、ワンライナーを実行するとその分だけ増えるので

```
# docker rm gloomy_perlman
```

などとして削る。

### ユーザーで実行可能に

**CentOS7**

セキュリティリスク大

```
$ sudo groupadd docker
$ sudo usermod -g docker bunzaemon
```

デーモンリスタートでは効かず、OS 再起動で効いた。