Dockerにおいて表題の通り。
■ 環境
- Docker 1.11.1
■ きっかけ
今までは慣れたCentOSにしていたのだが、コンテナにログインして作業をする機会もほとんどないので軽量だと噂のalpineに変更してみることにする。今回作業をするのは下記ZooKeeperのコンテナである。
■ Dockerfile
更新後のDockerfileは下記のようになった。
FROM alpine
MAINTAINER withsin <withsin@gmail.com>
ENV ZOO_VERSION=3.4.8
RUN apk --no-cache add openjdk8-jre bash
RUN mkdir /opt \
&& wget -O - http://archive.apache.org/dist/zookeeper/zookeeper-${ZOO_VERSION}/zookeeper-${ZOO_VERSION}.tar.gz | tar zx -C /opt \
&& ln -s /opt/zookeeper-${ZOO_VERSION} /opt/zookeeper \
&& mkdir /opt/zookeeper/data \
&& chown -R root:root /opt/zookeeper-${ZOO_VERSION} \
&& mv /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
EXPOSE 2181 2888 3888
CMD ["/opt/zookeeper/bin/zkServer.sh", "start-foreground"]
変更点は下記の通り。
- ベースのコンテナをalpineに変更
- `yum install`を`apk add`に
- ZooKeeperの各種スクリプトでbashが使用されているのでインストール
- ZooKeeperのインストール前に/optを作成(alpineでは存在しなかったので)
- curlコマンドは存在しなかったのでwgetで代用
- `yum clean all`に該当する`apk cache clean`は、インストール時に`–no-cache`とすることで不要
■ build
ビルドした結果は下記の通り。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
withsin/zookeeper 3.4.8-alpine cb316b792c95 About an hour ago 154.9 MB
withsin/zookeeper latest cb316b792c95 About an hour ago 154.9 MB
:
alpine latest d7a513a663c1 4 weeks ago 4.798 MB
:
withsin/zookeeper 3.4.8 3d8bc0053ba6 9 weeks ago 497.5 MB
:
$
alpineがそもそも5Mもないのだが、JREを入れたせいか155M程度まで膨れ上がった。しかし、以前のCentOS時の500Mに比べると3分の1以下になっていることが分かる。今後はalpineをベースのコンテナとして採用することにする。
以上。