目次

目次

【入門】Dockerfileの基本的な書き方

高橋克幸
高橋克幸
最終更新日2017/01/27 投稿日2017/01/27

Dockerfile

Docker は Dockerfile から命令を読み込み、自動的にイメージを構築できます。 Dockerfile にイメージを作り上げる命令を全て記述し、docker build で イメージを構築します。

$ docker build -t [タグ名] [Dockerfileのパス]

Dockerfile を記述しておけば、上記のコマンドを実行するだけで同じ環境をすぐに構築することができます。 Dockerfile ではどんな命令を使用できるか、まとめてみました。

Dockerfileの書式

Dockerfileの書式は基本的に以下のようになります。

#コメント
命令 引数

命令

FROM

FROM の書き方は3通りあり、FROM でベースとなるイメージを指定します。 Dockerfile では、コメントを除いて FROM を一番始めに書く必要があります。

FROM <image>
 or
FROM <image>:<tag>
 or
FROM <image>@<digest>

MAINTAINER

MAINTAINER 命令は、生成するイメージの Author (作者)フィールドを指定します。

MAINTAINER <name>

RUN

FROMで指定したイメージ上で、シェル形式のコマンドを実行します。 (Linux 上のデフォルトは /bin/sh -c で、Windows 上では cmd /S /C となります)

RUN <command>
 or
RUN ["executable", "param1", "param2"]

ADD

ADD 命令は にあるファイルやディレクトリをコピーし、コンテナ内のファイルシステム上にある で指定されたパスに追加します。 は複数指定することができます。また に URL を指定することでリモートのファイルをコピーすることがでます。

ADD <src>... <dest>
 or
ADD ["<src>",... "<dest>"] # 白スペースを使う場合にはこっちを

ここで気をつけなければならないのは、 追加される新しいファイルやディレクトリは全て UID と GID が 0 として作成される という点です。root 以外では実行や書き込みができなくなっているので、追加したファイル・ディレクトリをroot以外のユーザで操作する場合には、パーミッションを変更する必要があります。

COPY

COPY 命令は にある新しいファイルやディレクトリをコピーする命令です。コンテナ内のファイルシステム上にある に指定されたパスに追加します。

COPY <src>... <dest>
 or
COPY ["<src>",... "<dest>"]

COPY 命令も ADD 命令と同様に、 追加される新しいファイルやディレクトリは全て UID と GID が 0 として作成される という点に注意が必要です。

USER

USER 命令は各種命令の実行時のユーザを指定します。

USER <name>

WORKDIR

WORKDIR 命令は各種命令を実行する際のカレントディレクトリを指定します。

WORKDIR /path/to/workdir

ENV

ENV 命令は環境変数の設定を行います。

ENV <key> <value>
 or
ENV <key>=<value> ...

おわりに

上記以外にも幾つか命令があるのでご興味があれば以下を参照してください。

参考:Dockerドキュメント日本語訳

高橋克幸

新卒3年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。

目次