はじめに
Dockerをインストールしている前提です。
基本的な流れ
Docekrfileの作成
自分のローカルディレクトリに"Dockerfile"(拡張子なし)という名前でファイルを作成します。
このDockerfileには、ビルドするイメージのベースとなるOSや、インストールするプログラム、コピーするファイルなど、イメージに含めたい設定を記述します。
他人のDockerfileを取得することも可能です。(DockerHubなど)
Dockerfileからイメージをビルド
ここで、-t はビルドされるイメージに名前を付けるオプションです。.はDockerfileがあるディレクトリを指しており、Dockerはこのディレクトリをコンテキストとして使用します。
このステップにより、アプリケーションとその依存関係を含むイメージが作成されます。これにより、どの環境でも同じ条件でアプリケーションを実行できるようになります。
docker build -t my-custom-python .
イメージをrun
このコマンドは、my-custom-pythonという名前のイメージから新しいコンテナを起動し、そのコンテナ内でシェルを開始します。
-itオプションは、インタラクティブモードでターミナル入力を可能にするためのものです。これにより、コンテナ内でコマンドを実行したり、アプリケーションを手動で操作したりすることができます。
コンテナは、定義された環境でアプリケーションを隔離して実行するための軽量な実行単位です。
sudo docker run -it --name predict-server predict-server /bin/sh
これでDockerの中でCLI操作していきます。(Dockerファイルに実行まで書かれているならしなくても良くなる。任意)
Dockerfileの書き方
#途中までpython3.11の公式Dokerfileです。
#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#
FROM alpine:3.18
# ensure local python is preferred over distribution python
ENV PATH /usr/local/bin:$PATH
・
・
・
・
# 以下編集
# 必要なツールのインストール
RUN apk add --no-cache nano curl git bash
# 作業ディレクトリを設定
WORKDIR /app
# アプリケーションのファイルをコンテナにコピー
COPY . /app
#requirements.txtなら以下のように
RUN pip install -r app/requirements.txt
メモ
DockerfileにOSいれても、コンテナではOS動かさないんじゃないの?
DockerfileでOSを指定すると、実際にはフルOSをコンテナ内で動かすわけではありません。Dockerイメージは、カーネルを含まない軽量なOSレイヤーを提供します。これは、ホストOSのカーネル機能を利用して、必要なユーザースペースツール、ライブラリ、アプリケーションを動かすためのものです。
らしい、、、
コマンド一覧
docker container ls
docker run -v .:/app -dit pre-server0410
docker exec -it 764ce1de1840 bash