Dockerfileの書き方を調べる

Dockerを使い始めたので、便利な使い方をいろいろ覚えていこうと思います。

Dockerfileを使っていつでも同じ環境を構築する方法を、簡単なところから試してメモしていきます。

 

 

Dockerfileの使い方

Dockerfileという名前でファイルを作る。

Dockerfileを作ったディレクトリ上で「docker build .」コマンドを実行すると、ファイルの中身に従ってコンテナのセットアップが始まる。

 

FROMでベースとなるイメージを指定する

Dockerfileに「FORM イメージ名」と記述することでベースとなるイメージを指定します。

例えばDockerfileに以下だけ記述します。

FROM node:latest

Dockerfileを作ったディレクトリで「docker build .」を実行すると、nodeの最新バージョンがインストールされたイメージが作られるというかんじ。

FROMに指定できるイメージ名は以下のサイトのリストから選べる。

https://hub.docker.com/explore/

イメージ名は「名前:バージョン」という形になっているようです。

 

MAINTAINER

イメージを誰が作ったのかを書いておく場所。

個人のローカルでDockerfileを作るぶんにはどうでもいいと思いますが、公開したり会社でやる場合は名前を入れたほうが良いでしょう。

MAINTAINER funashimin

こんな感じ。

 

ENV

Dockerfile内で使う環境変数を設定する。パスを通したりするのが多い使い方だと思う。

ENV PATH $PATH:(追加したいパス)

 

ENVで宣言したパスはDockerfile内で「$変数名」の形式で参照することが出来る。

 

EXPOSE

コンテナが外部に公開するポート番号を指定できる。

EXPOSE 80

これに加えてコンテナ起動時にポートのバインド指定をすると外部からアクセスできるようになる。

-pオプションを使って-p8080:80とかする事で、ホスト側で8080にアクセスするとコンテナの80番ポートに転送される。

 

CMD

コンテナ起動時に実行するコマンドを一つだけ指定できる。

コンテナの初期処理をシェルにまとめておいて、それが実行されるようにしておくのが一般的な使い方になると思います。

CMD ["コマンド","オプション1”,"オプション2"…]

 

ENTRYPOINT

CMDと似ている。コマンドを一つだけ実行できる。

docker runで渡したコマンドライン引数が、ENTRPOINTで指定したコマンドの引数として渡されるらしい。

 

RUN

コマンドを実行し、結果をイメージにコミットする。

CMDがコンテナ実行時の初期処理なのにたいして、RUNはイメージを作成する時に実行したいコマンドを書くという感じか。

 

ADD

イメージに追加するファイルを指定する。

ADD コピー元 コピー先