こんにちは!今回の記事では、意外と仕組みがわかるまで時間がかかる!?「Docker」について書いていこうと思います。本記事では、最終的に簡易的なDockerコンテナを使用して動作を確認するというところまでを目標にしております
Dockerって何?なぜ必要??
開発環境を整えるのって、意外と大変ですよね...?
「自分のPCでは動いたのに、チームメンバーの環境では動いていない...」
なんて経験を何回したことか...結構通る道だと思ってます笑
そこで、登場するのが Docker !!
Dockerとは、「アプリをどの動作環境をまとめて管理できるツール」です
簡単にいうと、アプリを箱(コンテナ)に入れて動かすイメージ!
<ここがすごいポイント!>
・謎のPCでも同じように動く
・必要なソフトやライブラリを一括で管理できる
・開発・テスト・本番環境を統一できる
この3つのポイントこそがDockerを使う最大の強みです!
Dockerの仕組み
Dockerを理解するための基本的な用語を紹介します。
| 用語 | 説明 |
| Dockerイメージ | 設計図(Dockerfile)をもとに構築された環境のひな型。アプリやライブラリ、設定がまとまっている |
| Dockerコンテナ | イメージをもとに実際に動作しているアプリケーション(実行中の箱) |
| Dockerfile | 設計図。Dockerイメージを作るための手順で「どういう環境を作るか」を記述したファイル |
流れ
Dockerfile(設計図) → Dockerイメージ(環境のひな型) → Dockerコンテナ(動くアプリ)
実際にDockerを動かしてみよう!
ここでは、PythonとFlaskを使った簡単なWebアプリを例にします
たったの10分で「動く環境」を作ることができます!!
※エディターでの操作の知識が入ります
0.Docker Desktopアプリのインストールをします
インストール手順は、公式のドキュメントや参考になるドキュメント等を利用してください
1.ディレクトリの作成
[docker-sample]という名前のフォルダを作成して、
[docker-sample]の中に[app.py]というpythonファイルを作成しましょう
下は参考画像です

2.アプリの内部処理を書く
[app.ts]の中に下のコードを記述してください
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello Docker World!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
3.Dockerfileを作成する
[dockerfile]を[docker-sample]のフォルダと同じ階層になる場所に作成して、
下のコードを記述してください
# ベースイメージを指定
FROM python:3.11-slim
# 作業ディレクトリを作成
WORKDIR /app
# ソースコードをコピー
COPY docker-sample/ ./
# 必要なパッケージをインストール
RUN pip install flask
# アプリを起動
CMD ["python", "app.py"]
ディレクトリはこのようになっていれば正解です

4.ビルド&実行
ターミナルで、下のコマンドを1行ずつ実行してください
# イメージをビルド
docker build -t my-flask-app .
# コンテナを起動
docker run -p 5000:5000 my-flask-app
ブラウザでhttp://localhost:5000 にアクセスすると、
「Hello Docker World!」 と表示されたら、無事成功です!!
※以下画像は参考にどうぞ

Dockerを使うことのメリットまとめ
Dockerを使うメリット
| チーム開発 | 全員同じ環境で動作確認ができる |
| デプロイ | サーバーにそのまま持っていける |
| 保守性 | バージョン違いのトラブルを防げる |
| 学習コスト | 環境構築の練習にも最適 |
最後に、dottのインターンと関係はあるの?
Dockerの仕組みやファイルの書き方を理解しておくと、インターンでの開発環境構築やAPIサーバーのデプロイなどスムーズになります!すいちゃんは、いくつかのプロジェクトで実際にDockerを用いて開発をしています!それにプラスして、「環境構築に時間が取られない=開発に集中できる」ため、現場でも役にたつスキルになります!学生のうちから、触れておくことでインターン参加時に一歩リードできます!授業の開発でも役に立ちます!ぜひ、今回の記事を通してDockerに興味を持っていただけたらと思います!できることは無限大なので!