【M1 Mac】VScode+DockerでPython環境を構築する方法(データ解析・機械学習用コンテナ)

前回、M1 macでのpythonを環境構築する主な方法について3種類まとめました。

Django・Flaskを使ったアプリ開発や、機械学習・データサイエンス用のプログラムを実行できるようにするため、DockerとVisual Studio Code(VScode)を使って、Python環境を構築する手順(+Jupyter notebookへの接続まで )を記します。

Docker+VScodeである理由

Dockerを使うと、コンテナによって楽に管理しながら、比較的軽量に仮想環境を構築・実行できます。また、プロジェクトごとにコンテナを分けて使えば、Anacondaで時々起こるような依存関係の衝突による環境破壊リスクを防げます。

Visual Studio CodeではDockerコンテナ中のPythonインタープリターにアクセスする機能をデフォルトで使うことができます。Pythonで最も人気なIDE(統合開発環境)Pycharmだと有料版(年1万円ほど)である必要があります。VScodeは2番目のシェアを誇っており、Pycharmと同様に使いやすいIDEです。

2万4000超人の開発者に聞いた、Pythonで使う開発環境第1位は?

DockerとVScodeによるPython環境構築の手順

  1. Dockerのインストール
  2. Visual Studio Codeと拡張機能のインストール
  3. VscodeとDockerコンテナを接続してみる

1. Dockerのインストール

Dockerの公式ドキュメントに従いアプリをインストールします(以下内容は一緒です)。

まずはdockerを入れる前に、Rosetta2を準備します。ターミナルで次のコマンドを実行します。

 softwareupdate --install-rosetta

うまく行けば「softwareupdate –install-rosetta」と表示されるので、続いてApple silicon用のDockerアプリをインストールする。

docker for apple silicon

Dockerを開くとpasswordを要求されるので入力します。

2. Visual Studio Codeと拡張機能のインストール

microsoftのページからVScodeを入手し、同様にインストールします。

VScodeを開くと勝手に言語を認識し、日本語化プラグインを導入し用としてくれるので、許可します。その後、拡張機能「remote-containers」を入れます。

3. VscodeとDockerコンテナを接続してみる

ターミナルから次のコマンドを実行し、Docker Hubからminicondaをベースにしたjupyter lab(notebook)用コンテナをとってきます。

docker pull jupyter/scipy-notebook

ここで作るコンテナは何でも良いです。Docker Hubを探すと、AnacondaコンテナやPytorchコンテナなどいろいろ見つかります。

Dockerアプリの「Image」を開くと、新たなイメージが作成されているので「Run」→ optionを入力してコンテナを実行する。

  • Container Name:好きなコンテナ名
  • Local Host:8888(コンテナと接続するためにport、何でも良い)
  • Volume:とりあえずuser/application下フォルダを指定しました(ローカルとvolumeを共有したい場合は設定する)
Dockerコンテナのオプション

VAcodeのコマンドパレット(Command+shift+P)に「RemoteContainersAttach to Running Container」を入力すると、VScodeがコンテナと繋がり、新しいVScodeのウィンドウが立ち上がります。pythonパッケージを追加したい場合は、このターミナルから操作します。

Jupyter notebookを開いてみる

コンテナ実行中に、ブラウザに「http://localhost:8888/」と入力すると、以下のページが表示される。

Juupyter notebookへのログイン画面

ログインパスワード(token)は、コンテナをクリックすると見れる「log」にあるので、探してログインする(「http://~~~~/?token=OOOOO」のOOOOO部分)

DockerコンテナのLog画面

あとは見慣れた画面なので説明不要と思います。

Jupyter notebookログイン後

以上、VisualStudioCode+DockerでPython環境を構築する方法でした。