Dockerコンテナが簡単に作れる!【Dockerfile 】サンプル

docker

Dockerとは??という方は、
環境構築が驚くほど簡単になる【 Docker 】の概要説明の記事を参照ください。

Dockerfileをさくっと作りたいが、
Dockerfileに記載する命令って何があって、
どうやって使うんだっけ?
と、Dockerfileを作ろうと思う度に悩まれている方も多いのではないでしょうか。

そこで、Pythonの開発環境構築をベースとした、
Dockerfileのサンプルと、命令の使い方を纏めました。
一人でも多くの人が、さくっとDockerfileを作れるようになればと思っています。

Dockerfile サンプル

Pythonの開発環境を構築する為のDockerfileのサンプルです。

用意するファイルは、以下2ファイル。
・requirements.txt
インストールしたいpythonのパッケージを記載する。
例えば、
uWSGI==2.0.18

・Dockerfile
以下コードを格納します。

# ベースイメージ
FROM python:3 

# メタ情報の追加
LABEL version="1.0" 
LABEL description="Python開発環境"  

# 環境変数の設定
ENV VAR Hello-World
RUN echo ${VAR}  

# 作業ディレクトリの指定
WORKDIR /usr/src/app  

# アプリのインストール
COPY requirements.txt . 
RUN pip install --no-cache-dir -r requirements.txt

# 起動時の処理実行
CMD ["echo","Hello-World"]

命令の説明

命令は大文字・小文字を区別しません。
ただ、大文字が推奨されています。(引数との区別をする為)

命令説明
FROMイメージを作成する為のベースとなるイメージ
Dockerfileは必ず FROM命令で始めないといけません。
LABELメタ情報の記載
ENV環境変数の設定
WORKDIRワークディレクトリの設定
以降の RUN、CMD、ENTRYPOINT、COPY、ADDコマンドの
ワークディレクトリになります。
COPYCOPY {src} {dest}
ホスト内の {src} から、コンテナ内の {dest}へ、
ファイルやディレクトリをコピー
ADDCOPY命令と基本同じですが、
ホストのtarファイルをイメージに展開してくれます。
一般的に、COPY命令が推奨されています。
RUNコマンドを実行
VOLUME指定した名前を使って、マウントポイントを生成します。
但し、命令でのホストのマウント先は指定出来ません。
ホストのマウント先は、dockerコマンド・composeファイル から指定出来ます。
EXPOSEコンテナの実行時に、所定ネットワーク上のどのポートをリッスンするかを指定する。
CMDコンテナ起動時に実行する処理を設定する。
CMD命令は、以下形式で記載する。
CMD [“executable”,”param1″,”param2″]
注意点:CMD 命令は1 つしか記述出来ません。
#行頭に # を付けると、それ以降の文言は無視されます。
コメントとして扱われます。

Dockerコンテナの作成(コマンド実行)

docker build -t python-image .

ビルドを行い、イメージを作成します。
-t オプションで、イメージ名を付けます。
最後の「.」 ですが、Dockerfileが格納されているパスを指定します。
上記例では、Dockerfileが格納されているディレクトリでコマンドを実行しており、
Dockerfileのファイル名が「Dockerfile」の時は、ファイル名が省略可能となる為、
「.」となっています。

docker run --rm -it --name python-app python-image /bin/bash

作成したイメージから、コンテナを起動します。
-it オプションは、コンテナ内にログインします。
–rm オプションは、コンテナログアウト時にコンテナを自動的に削除します。

python --version

Pythonのバーションを確認しましょう。
Python 3.9.2
が返ってきました。

あとは、この中で Pythonのパッケージをインストールしたり、
Pythonコードを書いていけます。

exit

最後に、上記コマンドでコンテナからログアウトします。

参考

Dockerfile リファレンス

http://docs.docker.jp/engine/reference/builder.html

Dockerコマンド

http://www.tohoho-web.com/docker/command.html
タイトルとURLをコピーしました