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 命令は <src> にあるファイルやディレクトリをコピーし、コンテナ内のファイルシステム上にある <dest> で指定されたパスに追加します。
<src> は複数指定することができます。また<src> に URL を指定することでリモートのファイルをコピーすることがでます。
ADD <src>... <dest> or ADD ["<src>",... "<dest>"] # 白スペースを使う場合にはこっちを |
ここで気をつけなければならないのは、追加される新しいファイルやディレクトリは全て UID と GID が 0 として作成される という点です。root 以外では実行や書き込みができなくなっているので、追加したファイル・ディレクトリをroot以外のユーザで操作する場合には、パーミッションを変更する必要があります。
COPY
COPY 命令は <src> にある新しいファイルやディレクトリをコピーする命令です。コンテナ内のファイルシステム上にある <dest> に指定されたパスに追加します。
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年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。
最近書いた記事
- 2019.06.26コンテナイメージの縮小
- 2019.05.27Chromeのユーザ切り替えで複数のAWS環境の管理をわかりやすくする
- 2019.04.15ECRのライフサイクルポリシー
- 2019.03.29KongでOAuth2の認証手順