Dockerfileの理解
イメージのビルド方法を定義するDockerfileの構文と一般的な命令を学びます。
「Dockerfileの理解」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Dockerfileとは?
ケーキを焼くレシピを想像してください。Dockerfileはそれによく似ています。DockerがDockerイメージを自動的にビルドするために必要な手順をすべて記述したプレーンテキストファイルです。
材料を混ぜる代わりに、どのベースOSを使うか、どのソフトウェアをインストールするか、イメージ内でアプリをどのように設定するかをDockerに指示します。

メリット:ビルドの自動化
Dockerfileは開発ワークフローに多くのメリットをもたらします。
- 自動化:手作業はもう必要ありません。Dockerは毎回一貫してイメージをビルドします。
- バージョン管理:Dockerfileはコードなので、Gitを使って変更を追跡できます。
- 再現性:Dockerfileがあれば、誰でもまったく同じイメージをビルドできます。
- 透明性:イメージの内容を正確に確認できます。
Dockerfileの基本構造
Dockerfileは、上から下へ順番に実行される命令のリストです。各命令によって、イメージに新しいレイヤーが作成されます。
基本構文はシンプルです。
INSTRUCTION argumentsコメントは、多くのプログラミング言語と同じように#で始めます。Dockerの命令では大文字と小文字が区別されませんが、慣例として大文字を使用します。
FROMでベースイメージを選択する
すべてのDockerfileはFROM命令から始める必要があります。この命令は、新しいイメージの土台となるベースイメージを指定します。ベースイメージには通常、Alpine LinuxのようなOSが含まれ、場合によってはソフトウェアもあらかじめインストールされています。
何もないキャンバスにするか、基本的な色がすでに塗られたキャンバスにするかを選ぶようなものだと考えてください。
FROM alpine:latestRUNでコマンドを実行する
RUN命令は、イメージのビルド中にコマンドを実行するために使用します。パッケージのインストール、ディレクトリの作成、コードのコンパイルなどを行う場所です。
RUNコマンドごとに新しいレイヤーが作成されるため、&&でコマンドをまとめるとイメージのサイズを削減できます。
RUN apk update && apk add gitCMDでデフォルトコマンドを設定する
CMD命令は、実行するコンテナのデフォルトコマンドまたは引数を指定します。RUNとは異なり、CMDのコマンドはビルド中ではなく、コンテナが起動したときに実行されます。
コンテナの実行時にコマンドを指定した場合(例:docker run my-image ls)、そのコマンドによってCMD命令が上書きされます。
CMD ["echo", "Hello from container!"]COPYでファイルを追加する
COPY命令は、ホストマシン(イメージをビルドする場所)にある新しいファイルやディレクトリを、指定したパスのDockerイメージのファイルシステムへコピーします。
より透明性が高く、ローカルファイルだけをコピーするため、一般的にはADDよりも推奨されます。
COPY ./app /usr/src/app作業ディレクトリと環境変数
WORKDIRは、その後に続くRUN、CMD、ENTRYPOINT、COPY、ADD命令の作業ディレクトリを設定します。Dockerfileをより読みやすく整理できます。
ENVは環境変数を設定します。設定した変数は、Dockerfile内の後続の命令と実行中のコンテナから利用できます。
WORKDIR /app
ENV PORT=8080EXPOSEでポートを指定する
EXPOSE命令は、実行時にコンテナが指定したネットワークポートで待ち受けることをDockerに知らせます。ただし、実際にポートを公開するわけではありません。
これはドキュメントとしての指定だと考えてください。コンテナの外部から実際にポートへアクセスできるようにするには、docker runで-pフラグを使用する必要があります。
EXPOSE 80
EXPOSE 443初めてのシンプルなDockerfile
ここまでの内容を1つにまとめてみましょう。次は、Alpine Linuxのイメージを設定し、パッケージをインストールして、デフォルトコマンドを定義する基本的なDockerfileです。
ビルドするには、空のディレクトリにDockerfileという名前で保存し、ターミナルでdocker build -t my-simple-app .を実行します。
FROM alpine:latest
LABEL maintainer="CoddyKit"
RUN apk update && apk add --no-cache bash
WORKDIR /app
CMD ["bash", "-c", "echo 'Hello from my custom Alpine image!' && sleep 3600"]Dockerfile命令クイズ
理解度を確認しましょう!次の命令のうち、イメージのビルドプロセス中に実行され、イメージの内容や構造を直接変更するものはどれでしょうか?
まとめ:Dockerfileの基本
Dockerイメージについて理解するための大きな一歩を踏み出しました。Dockerfileはイメージをビルドするための命令を記述したテキストファイルであり、自動化や再現性などの大きなメリットをもたらします。
学んだ主な命令:
FROM:ベースイメージを定義します。RUN:ビルド中にコマンドを実行します。CMD:実行中のコンテナのデフォルトコマンドを設定します。COPY:ホストからイメージへファイルを追加します。WORKDIR、ENV、EXPOSE:イメージとコンテナの環境を設定します。
よくある質問
「Dockerfileの理解」レッスンは無料ですか?
はい。「Dockerfileの理解」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Dockerfileの理解」で何を学びますか?
イメージのビルド方法を定義するDockerfileの構文と一般的な命令を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Dockerfileの理解」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Dockerfileの理解
- カスタムDockerイメージの作成
- イメージレイヤーと最適化
- マルチステージビルドとイメージの縮小