「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・scikit-learnが最初からインストール済みで使える
・-vオプションでNotebookファイルをホスト側に永続保存できる
・VPSでもSSHポートフォワーディングで安全にアクセスできる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Jupyter Notebookとは?Dockerで起動するメリット
Jupyter Notebookは、ブラウザ上でPythonのコードを書いて、その場で実行できるツールです。実行結果がコードのすぐ下に表示されるため、データの変化を確認しながら分析を進められます。データサイエンスや機械学習の学習で世界中で使われています。なぜWindowsにそのままインストールせず、LinuxのDockerを使うのか?
WindowsにAnacondaをインストールする方法もありますが、次のような問題が起きがちです。
・ライブラリのバージョンが競合してインポートエラーが出る
・他のPython環境と干渉してどこで何が動いているか分からなくなる
・アンインストールが複雑で環境が汚れる
Dockerコンテナを使うと、Jupyter NotebookとPythonライブラリが完全に隔離された箱の中で動きます。コンテナを削除すれば元の環境に戻ります。WSL2やVPSのLinux上でDockerを使うことで、本番環境に近い場所でデータ分析の練習ができます。
DockerでJupyterを動かすメリットをまとめると次の通りです。
・コマンド1本で特定バージョンの分析環境を即座に起動できる
・コンテナを削除するだけで環境を完全にリセットできる
・複数のPythonライブラリ構成を同時に試せる
・本番のLinuxサーバーと同じ環境で分析スクリプトを検証できる
なお、Dockerを使わずに軽量なパッケージ管理環境でJupyterを動かしたい場合は、MinicondaでJupyterを起動する方法もあります。仮想環境ごとにPythonのバージョンを切り替えたい場合や、Dockerが使えない環境ではMinicondaが選択肢になります。
セットアップ前の確認事項
この記事は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は正常に動いています。「permission denied」や「Cannot connect to the Docker daemon」と表示される場合は、自分のユーザーがdockerグループに追加されていません。次のコマンドで追加できます。
# dockerグループに自分のユーザーを追加する(一度だけ実行) $ sudo usermod -aG docker $USER # グループを反映させるためにいったんログアウトして再ログインする # WSL2の場合は wsl --shutdown でターミナルを再起動する
docker ps を実行し、エラーが出なければ設定完了です。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
・--rm:コンテナ停止時に自動で削除する(練習用に適している)
・-p 8888:8888:LinuxのポートとコンテナのポートをつなぐPC側8888→コンテナ側8888
・quay.io/jupyter/datascience-notebook:使用するイメージ名(Jupyter公式のデータサイエンス用イメージ)
起動が完了すると次のようなログが表示されます。これは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の場合はSSHポートフォワーディングを使う
VPSで起動したJupyterは、インターネットに直接公開するとセキュリティリスクになります。8888番ポートをファイアウォールで外部に開放するのではなく、SSHポートフォワーディング(SSHトンネル)を使って安全にアクセスします。
VPSとは別の自分のPCで新しいターミナルを開き、次のコマンドを実行してください(VPS側のJupyterは起動したままにしておく)。
# 自分のPC上で実行するSSHポートフォワーディングコマンド # ローカルの8888番ポートをVPSのlocalhost:8888に転送する # -L ローカルポート:転送先ホスト:転送先ポート $ ssh -L 8888:localhost:8888 your_user@vps-ip-address # 例:VPSのIPが203.0.113.10、ユーザーがubuntuの場合 $ ssh -L 8888:localhost:8888 ubuntu@203.0.113.10
http://localhost:8888/lab?token=... にアクセスします。VPS側のJupyterに安全につながります。Jupyterを使っている間はSSHセッションを開いたままにしてください。接続を切ると転送も終了します。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
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()
5. scikit-learnで機械学習を試す
quay.io/jupyter/datascience-notebook にはscikit-learnも同梱されています。追加インストールなしで線形回帰をすぐ試せます。from sklearn.linear_model import LinearRegression import numpy as np # 月を1~5の数値に変換して線形回帰する X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) y = np.array([120, 135, 98, 167, 143]) model = LinearRegression() model.fit(X, y) # 6月の売上を予測する pred = model.predict([[6]]) print(f"6月の予測売上: {pred[0]:.1f}")
6月の予測売上: 152.6
コンテナの停止とバックグラウンド実行
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
起動ログが流れてトークンURLを見逃した場合
バックグラウンド起動(-d)や画面スクロールでトークンURLを見失った場合は、docker logs で確認できます。# コンテナのログからトークンURLを抽出する(--name で名前を付けて起動した場合) $ docker logs jupyter 2>&1 | grep token # 出力例 [I ServerApp] http://127.0.0.1:8888/lab?token=a3f9c1d8e2b4567890abcdef12345678
WSL2でhttp://localhost:8888にアクセスできない場合
次の順番で確認してください。・Docker Desktopが起動しているか確認する
・ブラウザで
http://127.0.0.1:8888 を試す(localhostの代わりに)・Windows Defenderファイアウォールの設定で8888番ポートが許可されているか確認する
VPSのJupyterにアクセスできない場合
VPSで動いているJupyterへのアクセスにはSSHポートフォワーディングを使います。8888番ポートをWAN側(インターネット)に開放するのは危険です。ポートは開放しないままにして、自分のPCのターミナルで次のコマンドを実行しながらブラウザでアクセスします。# 自分のPC上のターミナルで実行する(VPSのJupyterは起動したままにしておく) $ ssh -L 8888:localhost:8888 your_user@vps-ip-address # 上記を実行したままブラウザで以下にアクセスする # http://localhost:8888/lab?token=(VPS起動時に表示されたトークン)
Notebookから「No module named 'xxx'」エラーが出た場合
使いたいライブラリがコンテナに含まれていないケースがあります。Notebookのセルから次のようにpip install できます。# Notebookのセル内でpip installを実行する(!で始めるとシェルコマンドを実行できる) !pip install seaborn
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 |
| VPSからSSH経由で安全にアクセスする | ssh -L 8888:localhost:8888 user@vps-ip(自分のPCで実行) |
| コンテナを停止する | docker stop jupyter |
| コンテナを削除する | docker rm jupyter |
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
次に読む関連記事
Jupyter NotebookとLinuxをさらに活用するために、次の記事も参考にしてください。・trapコマンドでbashスクリプトのシグナルを捕捉・処理する方法|一時ファイル削除やエラー終了処理の実践例も(シェルスクリプト)
・fail2banコマンドでブルートフォース攻撃を自動ブロックする方法|SSHの不正アクセス対策とトラブルシュートも(セキュリティ)
・nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も(サーバー構築)
・straceコマンドでプロセスのシステムコールを追跡する方法|Permission deniedの原因特定やデバッグも(トラブルシューティング)
・nmapコマンドでポートスキャン・ネットワーク診断を行う方法|-sSや-Aの使い方とセキュリティ活用も(ネットワーク診断)
・lsblkコマンドでブロックデバイスを一覧表示する方法|ディスク構成やパーティション確認も(ファイルシステム管理)
・jqコマンドでJSONを解析・加工する方法|フィルタ・整形・抽出の実践例も(データ処理Tips)
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 次のページへ:LinuxサーバーにSSHで接続する入門|公開鍵認証の仕組みとVPS・クラウドへの接続手順
- 前のページへ:LinuxにApacheをインストールして最初のWebページを表示する入門|WSL2・Ubuntuで動作確認まで
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます