lulu

【Docker】DockerfileとDockerイメージ関連技術まとめ

ubuntu上でnginxを動かすDockerfileの例

Dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y -q nginx
CMD ["nginx", "-g", "daemon off;"]

DockerfileからDocker imageを作成

$ docker build -t ubuntu-nginx:1.0 .

Docker imageからcontainer起動

$ docker run -p 80:80 ubuntu-nginx:1.0

FROM命令

FROM命令はベースイメージを決めるために使われる
※ベースイメージは複数でも良い

RUN命令

RUN命令は指定したベースイメージに対して、ミドルウェアのインストールや設定などの環境構築のためのコマンドを実行します
※Shell形式 or Exec形式で指定可能

CMD命令

CMD命令はイメージから生成されたコンテナ内でコマンドを実行(デーモンの実行)する命令です
※複数指定したときは最後のコマンドのみ有効

RUN命令とCMD命令の違い

  • apatchをインストールするコマンドはRUN
  • apatchをデーモンとしてコンテナ内で常駐させるためのコマンドはCMD

その他の命令

WORKDIR命令

RUN命令やCMD命令、COPY命令などを実行するための作業用ディレクトリを指定
※ディレクトリの作成も可能

EXPOSE命令

EXPOSE 【ポート番号】

コンテナ実行時にリッスンするポート番号を指定する

ADD命令・COPY命令

ADD 【ホストのファイルパス】 【Dockerイメージのファイルパス】
  • ホスト上のファイルやディレクトリをDocker image(コンテナではなく、image。コンテナはimageから作るものだから)内にコピーするコマンド
  • ADD命令とCOPY命令の違いはリモートファイルを追加できるかどうか
  • ホスト上のファイルを追加するだけならば、COPY命令を使う