0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hyper-vでubuntuを立ち上げその中でjupyterコンテナ設置

Posted at

自分用のPython環境メモです

  • Windows 10 pro
  • Hyper-V
  • ubuntu 19
  • Docker
  • jupyter

Windows上で共有ディレクトリ作成
Hyper-vの有効化
Hyper-vでubuntu19立ち上げ

接続確認用
apt install curl

このままではsshで入れないので
apt install openssh-server

ubuntu上でwindowsの共有ディレクトリをマウント

sambaでwindowsのファイルシステム読み書き用

apt install cifs-utils

mkdir /home/username/share/
mount -t cifs -o "username=username,vers=2.0" //host-ip/share /home/username/share/

Docker入れる
apt install docker.io

jupyterイメージ入れる
docker pull jupyter/datascience-notebook

コンテナ立ち上げ
docker run -d -it
--name jupyter
-p 8888:8888
-v /home/share:/opt/notebooks
jupyter/datascience-notebook
/bin/bash

コンテナに入ってjupyter起動
docker attach jupyter

/opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks/jupyter/ --ip=0.0.0.0 --allow-root

[ctrl + p,q]でコンテナ立ち上げたまま抜ける

後で見れるようにjupyterのトークンをテキスト出力

docker logs jupyter | grep token= > /home/username/share/token.txt

VMのIP確認

hostname -I

windowsからVMのIP:8888で、vm上のjupyterを開き
共有ディレクトリ内のtoken.txtにtokenが入ってるのでそれを使って認証

jupyter上でpip installするのも可
!pip install openpyxl

コンテナに入ってapt install やmakeするも可
docker exec -it jupyter /bin/bash

jupyterの保存形式だとgit使いづらいとか作ったものをpyで保存しなおしとかめんどいので
下記参考でpy保存するようにする
https://qiita.com/cfiken/items/8455383f32ee19dfbba3

経緯
ちょっと作るくらいなら直接windowsにanaconda入れてやれば十分でもあるんだけど
シェルやlinux用モジュールが絡むものが使いづらかったりするのでubuntuに。

じゃあVM上のubuntuでやればとなると環境違いで動作しなかったりがあるときにめんどい

で、pyenvで環境切り替えとなるとそれをいちいち切り替えたりがめんどい
なのでdocker上で閉じてしまいコンテナを切り替えで対応
これならmecab辞書データやopencv、ffmpegのバージョン等の違いがあってもいける
容量は増えるけど。
VMを複数作るのもありだけど容量増えたりメモリ足らなくなったりとか厄介そう

メリット
pandasでいじったファイルをexcel保存したりしてすぐにexcelで確認できる
dockerコンテナのファイル出力も共有ディレクトリ経由で簡単
クラウドと違って金がかからない、ほどほどのPCと電気代はかかる

まだやってないけどできるんじゃないかなメリット
windows側でポートフォワードすれば外からdocker内のjupyterにアクセスで出先で回線あれば自宅の続きできる、気がする

デメリット
CUDAが使えない、Hyper-VでGPU使えないっぽいので。
容量増える
コンテナ入れるほどに増える、VMでも増えるし。
VM起動時にIP固定化できてない、やる方法あると思うんだけど知識足らず、起動しっぱなしだから特に困ることもないのでそのまま。

今後やりたいこと
CUDA使える環境にしたい
・ubuntuのデュアルブートにするか別PCに分離するか
ケチって一つの環境に入れてるのと、ゲーム兼用なのでコーディングのためにGPU買うのもなんか高い
しかしデュアルブートだとwindowsでの作業引き続きしつつというのも面倒になる
のでどうしようか悩み
nvidia-dockerがdocker for windowsに対応するか、WSLでGPU使えるようになれば解決するのだけれども

でもGPU目的ならVMとかコンテナにこだわらずこの記事の通りにやれば正解な気がする
https://qiita.com/kekekekenta/items/a46a899956b1c756ddce

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?