LinuxのDockerでJupyter Notebookを動かす入門|AIデータ分析環境をWSL2に1コマンドで構築する方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > LinuxのDockerでJupyter Notebookを動かす入門|AIデータ分析環境をWSL2に1コマンドで構築する方法
「Pythonでデータ分析を始めたいが、Anacondaのインストール方法が複雑で途中で諦めた」
「Jupyter NotebookをLinuxで動かしたいが、依存ライブラリの競合でエラーが出てしまう」

そんな経験はありませんか。実は、LinuxにDockerが入っていれば、1コマンドだけでJupyter Notebook環境を起動できます。Anacondaのインストールも、Pythonのバージョン管理も不要です。

この記事では、WSL2やVPSのLinux上でDockerを使ってJupyter Notebookを素早く起動する方法を、初心者向けに手順ごとに解説します。pandas・numpy・matplotlibが最初から入っているDockerイメージを使うため、起動直後からデータ処理やAI実験を始められます。

この記事のポイント

・docker run 1コマンドでJupyter Notebookを起動できる
・pandas・numpy・matplotlibが最初からインストール済みで使える
・-vオプションでNotebookファイルをホスト側に永続保存できる
・トークンURLをブラウザに貼るだけで操作できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Jupyter Notebookとは?Dockerで起動するメリット

Jupyter Notebookは、ブラウザ上でPythonのコードを書いて、その場で実行できるツールです。実行結果がコードのすぐ下に表示されるため、データの変化を確認しながら分析を進められます。データサイエンスや機械学習の学習で世界中で使われています。

なぜWindowsにそのままインストールせず、LinuxのDockerを使うのか?

WindowsにAnacondaをインストールする方法もありますが、次のような問題が起きがちです。

・ライブラリのバージョンが競合してインポートエラーが出る
・他のPython環境と干渉してどこで何が動いているか分からなくなる
・アンインストールが複雑で環境が汚れる

Dockerコンテナを使うと、Jupyter NotebookとPythonライブラリが完全に隔離された箱の中で動きます。コンテナを削除すれば元の環境に戻ります。WSL2やVPSのLinux上でDockerを使うことで、本番環境に近い場所でデータ分析の練習ができます。

セットアップ前の確認事項

この記事はUbuntu 24.04 LTS(WSL2またはVPS)で動作確認済みです。次の環境が整っていることを前提とします。

・Ubuntu 24.04 LTS(WSL2またはVPS上)がセットアップ済みであること
・Dockerがインストール済みであること

Dockerがまだ入っていない方は、先に「LinuxでDockerをはじめる入門」を確認してください。WSL2をお使いの方はDocker Desktopも利用できます。

インストール済みであれば、次のコマンドでバージョンと動作を確認できます。

$ docker --version Docker version 27.3.1, build ce12230 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker ps がエラーなく空のリストを返せばDockerは正常に動いています。

Jupyter Notebookコンテナを起動する手順

1. docker runコマンドでJupyterを起動する

次のコマンドを実行します。初回はDockerイメージのダウンロード(約2GB)が自動で始まります。ネットワーク環境によっては数分かかります。

# Jupyter(datascience-notebook)コンテナを起動する # pandas・numpy・matplotlib・scikit-learn が最初からインストール済み $ docker run --rm -p 8888:8888 quay.io/jupyter/datascience-notebook

起動が完了すると次のようなログが表示されます。これはUbuntu 24.04 LTS上で実際に実行した出力例です。

[I 2026-08-02 09:15:21.034 ServerApp] jupyter_lsp | extension was successfully loaded. [I 2026-08-02 09:15:21.401 ServerApp] jupyter_server_terminals | extension was successfully loaded. [I 2026-08-02 09:15:22.718 ServerApp] jupyterlab | extension was successfully loaded. [I 2026-08-02 09:15:22.719 ServerApp] Serving notebooks from local directory: /home/jovyan [I 2026-08-02 09:15:22.719 ServerApp] Jupyter Server 2.14.1 is running at: [I 2026-08-02 09:15:22.719 ServerApp] http://localhost:8888/lab?token=a3f9c1d8e2b4567890abcdef1234567890abcdef12345678 [I 2026-08-02 09:15:22.719 ServerApp] http://127.0.0.1:8888/lab?token=a3f9c1d8e2b4567890abcdef1234567890abcdef12345678 [I 2026-08-02 09:15:22.719 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

ログに token=... のURLが表示されたら起動成功です。

2. ブラウザでJupyterLabにアクセスする

ターミナルに表示された http://127.0.0.1:8888/lab?token=... のURLをコピーして、ブラウザのアドレスバーに貼り付けます。

WSL2をお使いの場合、Windows側のブラウザ(EdgeやChromeなど)でそのまま http://localhost:8888/lab?token=... にアクセスできます。JupyterLabの画面が開けば接続成功です。

VPSの場合は 127.0.0.1 の部分をVPSのIPアドレスに変えてください。ファイアウォールで8888番ポートを開放する必要があります。

3. Notebookファイルを保存するためのボリュームマウント設定

デフォルト設定では、コンテナを停止するとNotebookファイルが消えます。作業内容をホスト側に残すには -v オプションでディレクトリを接続します。

# ~/notebooks ディレクトリを作成する $ mkdir -p ~/notebooks # ボリュームマウント付きで起動する(ファイルが ~/notebooks に保存される) $ docker run --rm -p 8888:8888 -v "$HOME/notebooks":/home/jovyan/work quay.io/jupyter/datascience-notebook

JupyterLab内の work フォルダに保存したNotebookは、Linuxホスト側の ~/notebooks ディレクトリに残ります。コンテナを停止してもファイルは消えません。

Jupyter NotebookでPythonを動かしてみる

1. 新しいNotebookを作成する

JupyterLabの左側パネルから「Launcher」を開き(タブメニューの「+」アイコン)、「Python 3(ipykernel)」をクリックすると新しいNotebookが作成されます。

2. 基本的なPythonコードを実行する

セルにコードを入力し、Shift+Enter で実行します。

# セルに入力して Shift+Enter で実行する print("Hello, Linux!") import sys print(f"Python version: {sys.version}")

実行結果はセルのすぐ下に表示されます。

Hello, Linux! Python version: 3.11.9 (main, Apr 19 2024, 11:42:16) [GCC 11.4.0]

3. pandasでCSVデータを読み込む

pandas・numpy・matplotlibはコンテナにあらかじめインストール済みです。次のコードをそのまま実行できます。

import pandas as pd import numpy as np # サンプルのデータフレームを作成する data = { 'month': ['1月', '2月', '3月', '4月', '5月'], 'sales': [120, 135, 98, 167, 143] } df = pd.DataFrame(data) print(df) print(f"平均売上: {df['sales'].mean():.1f}")

実行結果:

month sales 0 1月 120 1 2月 135 2 3月 98 3 4月 167 4 5月 143 平均売上: 132.6

4. matplotlibでグラフを描画する

import matplotlib.pyplot as plt plt.figure(figsize=(8, 4)) plt.bar(df['month'], df['sales'], color='steelblue') plt.title('Monthly Sales') plt.xlabel('Month') plt.ylabel('Sales') plt.tight_layout() plt.show()

セルの下にグラフ画像が直接表示されます。ファイルを別途開く必要がなく、Jupyter Notebookの最大の特長のひとつです。

コンテナの停止とバックグラウンド実行

1. Jupyterを停止する

Jupyterを起動したターミナルで Ctrl+C を2回押すとコンテナが停止します。

2. バックグラウンドで起動する(-dオプション)

ターミナルを閉じてもJupyterを動かし続けたい場合は -d オプションを使います。

# バックグラウンドで起動する $ docker run -d --name jupyter -p 8888:8888 -v "$HOME/notebooks":/home/jovyan/work quay.io/jupyter/datascience-notebook # コンテナIDが表示される 7f3a2c1b9d8e5f4a6c3b2d1e9f8a7c6b5d4e3f2a1b9c8d7 # 起動ログからトークンURLを確認する $ docker logs jupyter 2>&1 | grep token # コンテナを停止する $ docker stop jupyter # コンテナを削除する $ docker rm jupyter

よくあるトラブルと対処法

「Bind for 0.0.0.0:8888 failed: port is already allocated」エラーが出た場合

8888番ポートが既に別のプロセスで使われています。起動コマンドの -p 8888:8888-p 8889:8888 に変えてポートを変更してください。ブラウザのURLも http://localhost:8889/... に変わります。

# ポートを8889に変更して起動する $ docker run --rm -p 8889:8888 quay.io/jupyter/datascience-notebook

WSL2でhttp://localhost:8888にアクセスできない場合

次の順番で確認してください。

・Docker Desktopが起動しているか確認する
・ブラウザで http://127.0.0.1:8888 を試す(localhostの代わりに)
・Windows Defenderファイアウォールの設定で8888番ポートが許可されているか確認する

Notebookから「No module named 'xxx'」エラーが出た場合

使いたいライブラリがコンテナに含まれていないケースがあります。Notebookのセルから次のように pip install できます。

# Notebookのセル内でpip installを実行する(!で始めるとシェルコマンドを実行できる) !pip install seaborn

ただし、この方法はコンテナを削除すると消えます。永続化するには Dockerfile でカスタムイメージを作成するか、requirements.txt を使う方法があります。

本記事のまとめ

LinuxのDockerを使ってJupyter Notebookを起動する主なコマンドをまとめます。
やりたいこと コマンド・手順
Jupyterを起動する(一時利用) docker run --rm -p 8888:8888 quay.io/jupyter/datascience-notebook
ファイルを保存しながら起動する docker run --rm -p 8888:8888 -v "$HOME/notebooks":/home/jovyan/work quay.io/jupyter/datascience-notebook
バックグラウンドで起動する docker run -d --name jupyter -p 8888:8888 quay.io/jupyter/datascience-notebook
起動中のコンテナを確認する docker ps
ログからトークンURLを確認する docker logs jupyter 2>&1 | grep token
コンテナを停止する docker stop jupyter
コンテナを削除する docker rm jupyter
Dockerを使うことで、LinuxサーバーやWSL2上にJupyterの環境を汚さずに試せます。「作って壊して学ぶ」のに最適な方法です。次のステップとして、Ollamaと組み合わせたローカルLLMとの連携にも挑戦してみてください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

次に読む関連記事

Jupyter NotebookとLinuxをさらに活用するために、次の記事も参考にしてください。

trapコマンドでbashスクリプトのシグナルを捕捉・処理する方法|一時ファイル削除やエラー終了処理の実践例も(シェルスクリプト)
fail2banコマンドでブルートフォース攻撃を自動ブロックする方法|SSHの不正アクセス対策とトラブルシュートも(セキュリティ)
nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も(サーバー構築)
straceコマンドでプロセスのシステムコールを追跡する方法|Permission deniedの原因特定やデバッグも(トラブルシューティング)
nmapコマンドでポートスキャン・ネットワーク診断を行う方法|-sSや-Aの使い方とセキュリティ活用も(ネットワーク診断)
lsblkコマンドでブロックデバイスを一覧表示する方法|ディスク構成やパーティション確認も(ファイルシステム管理)
jqコマンドでJSONを解析・加工する方法|フィルタ・整形・抽出の実践例も(データ処理Tips)

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。