2019年1月21日月曜日

athrill のミニマム docker image を作成する

docker image は、 kanetsugu2015/athrill_asp3 があるが、 athrill 本体以外もいろいろ入っていてでかい。

Dockerfile も公開されていないので、自分でミニマムな環境を作っていく。

環境

  • OS: Windows 10 Pro
  • docker: Docker version 18.09.1, build 4c52b90

必要な作業の確認

手作業での環境構築

ベースは debian:buster-slim で行きます。

docker pull debian:buster-slim
docker run -it --rm debian:buster-slim

以降は docker container 内での作業。

apt-get update
apt-get -y upgrade

# athrill のダウンロード・ビルドに使うパッケージたち
apt-get install make gcc git

# ソースのクローン
git clone https://github.com/tmori/athrill.git /athrill

# make
cd /athrill/trunk/src/build/target/linux_v850e2m/
make
cd /athrill/trunk/src/build/target/linux_v850esfk3/
make
cd /athrill/trunk/src/remote/remote_cui_client/
make -f Makefile.linux

動作確認

cd /athrill/sample/os/asp3/OBJ/
../../../../bin/linux/athrill2 -c1 -i -m memory.txt -d device_config.txt asp
...(略)

OK.

必要なファイル群の確認

athrill, athrill2, athrill_remote に必要なライブラリを特定する。

# ldd athrill
        linux-vdso.so.1 (0x00007ffc3871c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f602747c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f60272bb000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f602d43e000)
# ldd athrill2
        linux-vdso.so.1 (0x00007ffcb0fb4000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0a84231000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0a84070000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f0a8997f000)
# ldd athrill_remote
        linux-vdso.so.1 (0x00007ffe5dfaf000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc57d2f2000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc57d131000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc57d31e000)

この辺をコピーすればよいはず。 ...と思ったが、debian:buster-slim にはすべてそろっていた。

Dockerfile の作成

じゃぁ先ほどの手順を Dockerfile に落とし込んでいきます。

# ビルド環境を構築してビルド
FROM debian:buster-slim as build-env

LABEL maintainer "mikoto2000 <mikoto2000@gmail.com>"
LABEL version="d7db0e00cc67932a8385c56bebbfcf07a9f87b75"
LABEL description "athrill: d7db0e00cc67932a8385c56bebbfcf07a9f87b75"

RUN apt-get update && apt-get -y install \
    make \
    gcc \
    git \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN git clone https://github.com/tmori/athrill.git /athrill \
    && cd /athrill \
    && git checkout d7db0e00cc67932a8385c56bebbfcf07a9f87b75 \
    && cd /athrill/trunk/src/build/target/linux_v850e2m/ \
    && make \
    && cd /athrill/trunk/src/build/target/linux_v850esfk3/ \
    && make \
    && cd /athrill/trunk/src/remote/remote_cui_client/ \
    && make -f Makefile.linux

# 実行環境を構築してビルド環境からバイナリをコピー
FROM debian:buster-slim

LABEL maintainer "mikoto2000 <mikoto2000@gmail.com>"
LABEL version="d7db0e00cc67932a8385c56bebbfcf07a9f87b75"
LABEL description "athrill: d7db0e00cc67932a8385c56bebbfcf07a9f87b75"

# build-env から必要なファイルをコピー
COPY --from=build-env \
    /athrill/bin/linux/athrill \
    /usr/local/bin
COPY --from=build-env \
    /athrill/bin/linux/athrill2 \
    /usr/local/bin
COPY --from=build-env \
    /athrill/bin/linux/athrill_remote \
    /usr/local/bin

ビルドします。

cd /PATH/TO/Dockerfile
docker build -t mikoto2000/athrill:20190121 .

しばらく待っているとイメージが出来上がるはず。

動作確認

cd /PATh/TO/athrill/sample/os/asp3/OBJ
docker run -it --rm -v "$(pwd):/asp3" --workdir "/asp3" mikoto2000/athrill:20190121 athrill -i -m memory.txt -d device_config.txt asp
...(略)

動いた、OK.

サイズ比較

> docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
mikoto2000/athrill               20190121            fbdac9b0c9ef        8 minutes ago       71.5MB
kanetugu2015/athrill_asp3        ver4.0              e3faeec7fa1a        5 weeks ago         1.59GB

うん、いい感じじゃないでしょうか?

0 件のコメント:

コメントを投稿