type
status
date
slug
summary
tags
category
icon
password
书籍
カスタムコンテナイメージの作成:Dockerfileを使用した方法
目標
このセクションを完了すると、学生は一般的なDockerfileコマンドを使用してコンテナイメージを作成できるようになります。
概要
Dockerfileを使用してカスタムコンテナイメージを作成するプロセスを以下の手順で解説します。これにより、自分専用のアプリケーションやサービスをコンテナ化できるようになります。
ベースコンテナ
Dockerfileは、コンテナイメージを自動的にビルドするためにDockerが提供する仕組みです。Dockerfileからイメージをビルドするプロセスは、次の3つのステップで構成されます:
- 作業ディレクトリを作成する。
- Dockerfile仕様を書き込む。
- dockerコマンドを使ってイメージをビルドする。
1. 作業ディレクトリの準備
- 新しい作業ディレクトリを作成
- Dockerfileを作成
作業ディレクトリ内に、
Dockerfile
という名前のファイルを作成します。2. Dockerfileの基本構文
Dockerfileは、次のフォーマットで命令を記述します:
- コメント:
#
で始まる行(インラインコメントはサポートされない)
- 命令(INSTRUCTION): 大文字で記述するのが一般的
Dockerfile内の命令は、記述された順に実行され、最初の命令は必ず
FROM
で始まります。3. 基本的な命令の解説
① FROM
ベースイメージを指定します。
② LABEL
イメージにメタデータを追加します。
③ RUN
コマンドを実行して新しいレイヤーを作成します。
④ EXPOSE
コンテナが使用するポートを指定します。
⑤ ENV
環境変数を設定します。
⑥ ADD / COPY
ファイルをコピーします(
ADD
はリモートURLや圧縮ファイルの解凍も可能)。⑦ USER
コンテナ内で使用するユーザーを設定します。
⑧ ENTRYPOINT / CMD
コンテナ起動時のデフォルトコマンドを指定します。
ENTRYPOINT
と CMD
はコンテナの実行コマンドを設定するものです。ENTRYPOINT
: 必ず実行するメインコマンドを設定する。
例:
ENTRYPOINT ["command", "arg1"]
CMD
:ENTRYPOINT
に渡すデフォルトの引数を設定する。
例:
CMD ["arg2"]
動作例
- Dockerfile:
- コンテナ起動時の実行結果:
- デフォルトでは:
command arg1 arg2
- 実行時に引数を指定:
command arg1 <指定した引数>
(例:docker run my_image arg3
→command arg1 arg3
)
ポイント
ENTRYPOINT
: 固定部分
CMD
: デフォルトの可変部分
- 実行時に引数を指定すると
CMD
が上書きされる。
4. 実例: Apache WebサーバーのDockerfile
以下は、Apacheを実行するカスタムコンテナの例です:
5. ENTRYPOINTとCMDの使い方
ENTRYPOINT
とCMD
は以下の形式で記述できます:- JSON形式(推奨)
- シェル形式
使い分けの例
現在時刻を表示するコンテナの場合:
- 起動時、現在時刻が表示されます。
- 別の引数を渡すことで
CMD
を上書き可能です。
6. レイヤーを効率化する方法
非効率な例
複数の
RUN
命令を記述すると、それぞれが新しいレイヤーを作成します:効率的な例
1つの
RUN
命令にまとめることで、レイヤー数を削減できます:7. イメージのビルド
- イメージをビルド
作業ディレクトリ内で次のコマンドを実行します:
- ビルド結果を確認
ビルドが成功すると、新しいイメージがリストに表示されます:
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/145d7ae8-88e2-80c7-ba13-ed903ba15156
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章