目次
Dockerfileからイメージを作成
Dockerfileからイメージを作成するには、buildコマンドを使用します。
“-t” オプションでイメージ名を自分でつけることができます。
$ docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]
Dockerfileの命令一覧
コマンド・デーモン実行系
・RUN
・CMD
・ENTRYPOINT
・ONBUILD
・STOPSIGNAL
・HEALTHCHECK
RUN
Dockerfile内の記述を逐一実行する際に使用します。
shell形式とexec形式の2つがあります。
CMD
コンテナ作成時、起動時に実行するデフォルトのコマンドを指定します。
コンテナを起動するコマンドを実行する際に、コマンドを指定することで上書きできます。
環境・ネットワーク設定系
・ENV
・WORKDIR
・USER
・LABEL
・EXPOSE
・ARG
・SHELL
ENV
環境変数を指定します。
WORKDIR
Dockerfileに書かれた命令を実行する場所を指定します。
つまり、CMDを実行する場所になります。
コンテナを起動時の初期位置にもなります。
ファイル操作系
・ADD
・COPY
・VOLUME
Dockerfileからコンテナを起動してみる
Djangoを起動するDockerfile
まずは、ディレクトリ構造を確認しておきましょう。
/configとmanage.pyは、あらかじめdjango-adminコマンドでプロジェクトを作成しておきます。
djangoProject
├── Dockerfile
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
└── requirements.txt
requirements.txt
コンテナ内で使用するライブラリを記述しておきます。
-i https://pypi.org/simple
django==2.2
pytz==2019.3
sqlparse==0.3.0
Dockerfile
FROM python:3.7
ENV PYTHONBUFFERED 1
RUN mkdir code
COPY . /code
WORKDIR /code
RUN pip3 install -r requirements.txt
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
ENV PYTHONBUFFERED 1
→標準エラー出力をバッファに溜め込まない
COPY . /code
→カレントディレクトリの内容を/code内にコピー
WORKDIR /code
→Dockerfileの命令を実行する場所
→コンテナ起動時の初期位置
RUN pip3 install -r requirements.txt
→イメージ作成時に実行
CMD [“python3”, “manage.py”, “runserver”, “0.0.0.0:8000”]
→コンテナ起動時に実行されるコマンドをデフォルトで設定
イメージを作成
$ docker build -t django:new .
以下のコマンドで確認
$ docker images
コンテナを起動・作成
$ docker run -it -p 8000:8000 -v [ホスト側のパス]:/code –name django django:new
-vオプションでホスト側のパスを指定する際は、/Users〜の絶対パスを指定する必要がある。
コンテナが起動しているか確認
$ docker ps
コンテナを停止
$ docker stop django
コンテナを再起動
$ docker start django