20160915
Virtualbox 上の CentOS7
- docker 自体のインストール
- GMT4.5 のインストール
- GMT5 のインストール
- Docker 環境へのアクセス
- 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 再起動で効いた。