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 コピー元 コピー先