Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
48
Help us understand the problem. What is going on with this article?
@muddydixon

Docker ARG がimage量産に便利

More than 5 years have passed since last update.

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

便利!

48
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
muddydixon
JavaScript (HTML5, Node, jQuery) Perl R Hadoop MongoDB DataMining MachineLearning InfoGraphics
tver-technologies
Innovate TVision, Designing Value / テレビ・動画配信の可能性を切り拓き、新しい価値をデザインしていきます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
48
Help us understand the problem. What is going on with this article?