Dockerにおいて表題の通り。ちょっと勘違いをしていた(?)のでメモしておく。
■ 環境
- Docker 1.8.2
■ 今まで
Dockerfileには下記のように書いていた。下記はZooKeeperをダウンロードして展開するまで。
RUN curl http://ftp.tsukuba.wide.ad.jp/software/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz | tar zx -C /opt
普段Dockerのコンテナイメージを作成する際には、CentOSのコンテナイメージを基に作成しているが、CentOSのコンテナイメージには`wget`コマンドは無い為、`curl`コマンドを用いて1行では書いていた。ただし`tar`コマンドを事前に入れる必要があったのが少々難点に感じていた。
■ ADD
Dockerfile reference > ADD
https://docs.docker.com/reference/builder/#add
上記を見ると、`ADD`にはURLを指定することも可能なようだ。またローカルファイルを`ADD`する場合に、`gzip`/`gzip2`/`xz` などの圧縮形式は展開して配置してくれる。これを混ぜて勘違いしていたようだ。
URLから取得した`tar.gz`のファイルを展開して配置してくれる、と。
`ADD`にURLを指定。
ADD http://ftp.tsukuba.wide.ad.jp/software/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz /
上記では、`/`に`zookeeper-3.4.6.tar.gz`がダウンロードされたままの状態であった。
次いで、Dockerfileと同じディレクトリに`zookeeper-3.4.6.tar.gz`をダウンロードした後に下記Dockerfileを用いて`build`をする。
ADD zookeeper-3.4.6.tar.gz /
この場合には、`/zookeeper-3.4.6`と展開されたものが配置されていた。
URLで取得した`tar.gz`も展開してくれれば良いのに…。
以上。