LoginSignup
50
48

More than 5 years have passed since last update.

Docker ARG がimage量産に便利

Posted at

Docker 1.9 がでて、 ARG という項目が追加されました(document)。
概要としては、 docker build 時に --build-arg <KEY>=<VAL> として渡した変数が Dockerfile 内で利用できるというものです。

個人的には環境変数を拾ってくれるのが欲しかったのですが、今回は据え置きで、あくまで Dockerfile 内の ENV 命令でセットされたものだけが、解釈対象だそうです。

どういう用途で便利かというと、

  • 設定だけを変えた同じイメージを量産したい場合

これです!これができるようになりました。

例えば、 ulimit の値を変えたイメージを作りたい場合にはイメージを2つ作るための Dockerfile を作るか、docker run の時の ENV を拾って sed などのコマンドでほげほげしたりするスクリプトを書いたり、だったと思います。
その他、例えば、同時接続数が違うだけの nginx の設定ファイルとかを、設定ファイルだけ数多く用意しておいて、作り分けるなどが可能になります。

使い方

% ls *.cnf
10.cnf 100.cnf 50.cnf
% cat Dockerfile
FROM busybox
MAINTAINER muddydixon@gmail.com

ARG MAX_CONNECTION=${MAX_CONNECTION:-100}
COPY MAX_CONNECTION}.cnf /tmp/${MAX_CONNECTION}.cnf

% docker build --rm -t dockerarg-default .
% docker run -it --rm dockerarg-default ls /tmp
100.cnf

% docker build --rm --build-arg MAX_CONNECTION=50 -t dockerarg-50 .
% docker run -it --rm dockerarg-50 ls /tmp
50.cnf

% docker build --rm --build-arg MAX_CONNECTION=10 -t dockerarg-10 .
% docker run -it --rm dockerarg-10 ls /tmp
10.cnf

便利!

50
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
48