【初心者向けハンズオン】Dockerの基本と使い方

みなさんこんにちは。iidahです。
今年度ももうすぐ終わり。
案件の中で知っている前提として扱われることが多いコンテナ技術。
新人のエンジニアの方や、開発経験が少ない人はコンテナについてあまり詳しくない人がいると思います。
本記事ではそのような方々に向けてコンテナ技術、Dockerとは何かを解説し、ハンズオン形式で実際にコンテナを起動するところまでを解説していきます。
目次
この記事の目的
本記事ではコンテナ技術についてほとんど知らない人に向けて、コンテナ技術とはなにか、どのように扱うのかについて解説し、コンテナの利用方法の知見の1つになってくれればと思います。
コンテナとは
コンテナとは、1つのサーバー上で複数のサーバーを実行させるための仮想化技術のことです。
以下の図のように1つのPCに3つのコンテナの作成・起動をさせることができます。

3つのコンテナは互いにメモリやファイルシステムを共有せず、個々のサーバーとして並列で動かすことができます。
一方で、OSは元のPCのOSを3つのコンテナで共有しています。
ホストOSの上にOS環境(コンテナ)を乗せ、環境を動作させる部分から「OSレベルの仮想化」ともいわれます。
コンテナを作成するためにはその設計書となるコンテナイメージを作成する必要があります。
コンテナイメージは「ファイルシステム」と「メタ情報」の2つの情報からなります。
ファイルシステムとはファイルの情報をメモリにどのように保管するのかや、ファイルの操作の仕方などのファイルの管理方法の仕組みのことです。
メタ情報はアプリケーションの実行に必要なデフォルトのコマンドや引数の指定、外に公開するポート番号の情報、ボリューム領域などのコンテナ作成時に必要な情報のことを指します。
後述するDockerfileではメタ情報を記載していきます。
Dockerとは
Dockerは、コンテナ型仮想化を扱うためのプラットフォームで、コンテナの作成・配布・実行を簡単にするためのツール群です。
Dockerfile という設定ファイルを用いてコンテナイメージを作成し、Docker Engine(Docker Desktop に含まれる)を使ってコンテナを起動できます。
Docker Desktopは、Docker Engineや Docker CLI、Docker Compose などを含む統合ツールで、コンテナの管理や開発を手軽に行える環境を提供します。
Dockerfileとは
Dockerfileとはコンテナイメージに当たる設定ファイルです。
ここでは設定ファイルを作成する上でよく用いられるコマンドを解説していきます。
FROM句
FROM句はコンテナのベースイメージが何かを記載します。以下は基本の書き方です。
FROM <イメージ名>:<タグ>
例えばNode.jsのWebアプリをコンテナに乗せる場合はNode.jsのベースイメージを記載、
Pythonのアプリケーションをコンテナに乗せる場合はPythonのベースイメージを記載します。
以下はPythonの場合の記載の一例です。
FROM python:3.12-alpine
WORKDIR句
WORKDIR句ではコンテナ内でどのフォルダを作業用として扱うかを指定します。
以下のように記載されます。
WORKDIR <ディレクトリ名>
ここで指定したディレクトリにファイルを作成し、実行することができます。
COPY句
COPY句はローカル環境に作成したアプリのディレクトリなどをコンテナ内のディレクトリにコピーするコマンドです。
以下のように記載します。
COPY <コピー元のディレクトリ> <コピー先のディレクトリ>
例えば以下のように記述することでローカルのlocal-projectディレクトリ内のファイル群を、コンテナのappディレクトリにコピーしています。
COPY local-project /app
CMD句
CMD句ではコンテナ起動時に実行されるコマンドを記載します。
例えばコンテナ起動時にPythonのrun.pyを実行する場合、以下のように記載します。
CMD ["python","run.py"]
bashスクリプトを指定すれば、コンテナ起動時に複数のコマンドを実行することができます。
【ハンズオン】Dockerを用いたコンテナの作成・起動
ここからはDockerを用いて、実際にコンテナの作成・起動を行っていきます。
環境情報
今回は以下の環境で実施していきます。
| OS情報 | Windows 11 64bit: 25H2 |
| CPU | Intel(R) Core(TM) Ultra 5 |
| 実装RAM | 16GB |
| システム | x64 ベースプロセッサ |
| Docker Desktopのバージョン | 4.61.0 |
また、Dockerでコンテナを作成・起動させるので、Docker Desktopを立ち上げておきましょう。
Dockerfileの作成
まずはDockerfileを作成します。今回は以下の要件に基づいたDockerfileを作成します。
・ベースイメージはPython 3.12
・ローカルのpythonディレクトリ内に記載したapp.pyをコンテナにコピー
・コンテナ起動時にapp.pyを実行
pythonディレクトリは以下に配置してください。
作業ディレクトリ/
∟python/
∟app.py
∟dockerfile
dockerfileは以下のようになります。
FROM python:3.12-alpine #Python3.12をベースイメージに設定
WORKDIR /project-main #作業用ディレクトリを指定
COPY python /project-main #コンテナにローカルのファイルをコピー
CMD ["python","app.py"]
app.pyの内容は以下になります。コンテナを起動するとコンソールに「Hello Docker」が表示されるようにします。
print("Hello Docker")
コンテナのビルド
まずはコンテナをビルドします。
コンテナをビルドすることでDocker Desktopにコンテナイメージを作成します。
以下のコマンドを実行してください。
docker build -t test-project
docker buildコマンドはDockerコンテナを作成するコマンドです。
-tはタグをつけるオプションで「test-project」というタグをつけています。
このタグをつけることで、次のコンテナの起動がやりやすくなります。
また、Docker Desktopでどのコンテナイメージを作成したのかが分かりやすくなります。
実行すると以下の画像のように実行結果が表示され、最後のURLをクリックするとその下の画像のようにDocker DesktopのBuildsにコンテナイメージが作成されます。


コンテナの起動
では、作成したコンテナイメージを元にコンテナを作成・起動して「Hello Docker」を表示させてみましょう。
以下のコマンドを実行してください。
docker run test-project
docker run コマンドでコンテナを作成・起動します。
先ほどのbuildコマンドで指定したタグを今回のrunコマンドで指定することで実行しやすくしています。
実行するとコンテナが起動し、コンソールに「Hello Docker」が表示されます。
Docker Desktopの画面でも「containers」タブでコンテナが作成され、実行されたことが分かります。


今回はprint関数のみなので、起動した後すぐにコンテナは停止します。
終わりに
本記事ではコンテナ技術とDockerについて解説し、
実際にコンテナの作成・起動をする流れをハンズオン形式で解説いたしました。
本記事を通じて、コンテナの利用方法の知見の1つになってくれればと思います。
各コードはコピーアンドペーストして利用できるので、ぜひ試してみてください。








