Docker 入門

Python

Dockerとは、アプリケーションを「コンテナ」という単位でまとめて動かせるプラットフォームのことです

環境開発をチームで共有できるので共同開発のトラブルが少なくなります

venvや、pyenv、ミドルウェアまですべてまとめた環境ファイルのようなものです


1. 基本的なイメージ

  • 普通にアプリを動かすときは「アプリ本体 + 必要なライブラリ + OSの環境設定」が必要です。
  • 開発環境やサーバー環境が違うと「動いたり動かなかったりする」問題が起こります。
    → これを「環境依存問題」と言います。

Dockerは、この「環境一式」をコンテナにまとめて動かせるようにします。
つまり、どこで動かしても同じ動作を保証できます。

🔹 コンテナとは?

  • 軽量な「仮想環境」のようなもの
  • OSのカーネルを共有するので、仮想マシン(VirtualBoxやVMwareなど)より高速・軽量
  • アプリと必要なライブラリをひとまとめにして、どこでも実行可能

🔹 Dockerの主な要素

  1. Dockerイメージ
    • アプリの設計図
    • 例えば「Python 3.12 + Flask + 必要なライブラリ」というセットをイメージとして作る
    • このイメージから「コンテナ」を起動する
  2. Dockerコンテナ
    • イメージをもとに動いている実行環境
    • 「イメージ = 設計図」「コンテナ = 実際の家」と考えると分かりやすい
  3. Docker Hub
    • 世界中の人が作ったイメージを公開している「アプリの倉庫」

🔹 使うメリット

  • 環境構築が楽:docker run で必要な環境がすぐ立ち上がる
  • どこでも同じ動作:開発PCでもサーバーでも再現性がある
  • 軽量・高速:仮想マシンよりリソース消費が少ない
  • 分離性が高い:プロジェクトごとに環境を分けられる

2. Dockerのインストール方法

Docker のインストール方法を Windows / Mac / Linux (Ubuntu) に分けて説明します

🔹 Windows の場合

  1. 公式サイトからダウンロード
    👉 Docker Desktop for Windows
  2. インストーラを実行してインストール
  3. 再起動後、タスクバーに「Dockerのクジラアイコン」が出れば成功
  4. PowerShell で確認: docker --version → バージョンが表示されればOK

⚠️ Windows Homeの場合は WSL2 が必要です

🔹 Mac の場合

  1. 公式サイトからダウンロード
    👉 Docker Desktop for Mac
  2. .dmg を開いてインストール
  3. アプリを起動 → メニューバーにクジラのアイコンが出ればOK
  4. ターミナルで確認: docker --version

🔹 Ubuntu (WSL2 や VPS) の場合

公式リポジトリからインストール

# 1. パッケージを更新
sudo apt update
sudo apt upgrade -y

# 2. 必要なパッケージをインストール
sudo apt install -y ca-certificates curl gnupg lsb-release

# 3. Docker公式のGPGキーを追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 4. Dockerリポジトリを追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. パッケージリスト更新
sudo apt update

# 6. Docker本体をインストール
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 7. Dockerサービスを有効化&起動
sudo systemctl enable docker
sudo systemctl start docker

# 8. 動作確認
docker --version

🔹 sudo なしで使う設定(便利)

sudo usermod -aG docker $USER

一度ログアウト&ログインすれば sudo なしで docker run が使えるようになります


次に例としてスクレイピングプロジェクトをコンテナ化してみます

3. Playwrightをつかったスクレイピングをコンテナ化

Playwrightはブラウザを操作するので、ブラウザと依存関係を含めたDockerコンテナを作る必要があります。

以下に最小限のDocker構成例を紹介します。


🐳 Playwright + Python コンテナの例

1. ディレクトリ構成

playwright-scraper/
├── Dockerfile
├── requirements.txt
└── scraper.py

2. requirements.txt

playwright

3. scraper.py

テスト用に Playwright で Google を開くサンプルです。

from playwright.sync_api import sync_playwright

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)  # ヘッドレスブラウザ
        page = browser.new_page()
        page.goto("https://www.google.com")
        print(page.title())  # => "Google"
        browser.close()

if __name__ == "__main__":
    main()

4. Dockerfile

これがdockerイメージの設計図となりますので詳しく解説します

# ベースイメージ: Playwright公式のPython入りイメージを利用
FROM mcr.microsoft.com/playwright/python:v1.48.0-jammy

# 作業ディレクトリを作成
WORKDIR /app

# 依存ライブラリをコピーしてインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# スクリプトをコピー
COPY scraper.py .

# デフォルトの実行コマンド
CMD ["python", "scraper.py"]

行ごとの説明

FROM mcr.microsoft.com/playwright/python:v1.48.0-jammy
  • ベースイメージの指定
  • Microsoft公式が提供する「Playwright + Python入り」のイメージを利用
  • これにより、ブラウザ(Chromium/Firefox/WebKit)と必要な依存関係がすでに入っている
  • v1.48.0-jammy は Playwright のバージョン + Ubuntu 22.04(Jammy)の意味

WORKDIR /app
  • コンテナ内での作業ディレクトリを /app に設定
  • 以降のコマンド(COPYやRUN)はこのディレクトリを基準に実行される

COPY requirements.txt .
  • ホスト側(PC上)の requirements.txt を、コンテナ内の /app/requirements.txt にコピー

RUN pip install --no-cache-dir -r requirements.txt
  • requirements.txt に書かれたPythonライブラリをインストール
  • --no-cache-dir はキャッシュを残さないオプションで、イメージサイズを小さくできる

COPY scraper.py .
  • スクレイピング用のスクリプト scraper.py をコンテナ内にコピー

CMD ["python", "scraper.py"]
  • コンテナを起動したときに デフォルトで実行するコマンド を指定
  • 今回は python scraper.py が実行される

Dockerfileまとめ

  1. Playwright入り公式イメージをベースにする
  2. 作業ディレクトリ /app を作成
  3. requirements.txt をコピーして、Pythonライブラリをインストール
  4. スクリプトをコピー
  5. コンテナ起動時に python scraper.py が走る

👉 このDockerfileを使えば、環境依存なしでPlaywrightのスクレイピングを動かせるコンテナが作れる、という仕組みです。


4. ビルド & 実行

# イメージをビルド
docker build -t playwright-scraper .

# コンテナを実行
docker run --rm playwright-scraper

→ 正常に動けば、Google というタイトルが出力されます


🔹 補足

  • Playwrightは「公式Dockerイメージ」が用意されているので、自分でブラウザを入れる必要はありません
  • 上記の mcr.microsoft.com/playwright/python イメージには、Chromium / Firefox / WebKit など主要ブラウザがすでに入っています。
  • VPSやクラウド環境でも同じDockerfileを使えば、再現性高くスクレイピング環境を作れます。

このようにどんな作業環境でも、このdockerプロジェクトをそのまま動かせば、すぐにPlaywrightでスクレイピングできるコンテナを作れます。

コメント