開発環境の構築のために、Vagrantを利用して、Ubuntuをインストールする手順を紹介します。

手順 *

  • (1) VirtualBoxをインストール
  • (2) Vagrantをインストール
  • (3) vagrantコマンドを実行して、Ubuntuをインストール

(1)と(2)VirtualBoxとVagrantのインストール *

以下のURLからVirtualBoxとVagrantをダウンロードし、インストールします。

(3) コマンドを実行してUbuntuをインストール *

【Windows】の場合:

コマンドプロンプトを起動し、以下のコマンドを実行します。

> mkdir ubuntu
> cd ubuntu

Windowsの64bit版を利用している場合、以下のコマンドを実行します。Ubuntu18.04がインストールされます。

> vagrant init ubuntu/bionic64
> vagrant up --provider virtualbox

なお、Windowsの32bit版を利用しているなら「ubuntu/xenial32」に変更します。すると、Ubuntu16.04(32bit)がインストールされます。また、Ubuntu16.04を利用する場合には「ubuntu/xenial64」に変更します。

追加の設定 (1) メモリを増やす *

何かの処理を実行したときに、メモリエラーが出てしまったとき、Vagrantfileをテキストエディタで開いて以下の設定を書き加えてください。機械学習の用途で利用するには必須の設定です。以下はメモリを8GB(8192MB)に設定します。

Vagrant.configure("2") do |config|

// --- ここから:追記 ---
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "8192"
  end
// --- ここまで:追記 ---

end

そして、以下のコマンドを実行してVirtualBoxを再起動して設定が反映されるようにします。

> vagrant halt
> vagrant up

なお、VirtualBoxを開いて、GUI画面でメモリを増やすのと同じです。うまく設定できない場合、直接変更するのもありです。

追加の設定 (2) ポートフォワーディング *

また、Jupyter Notebookを動かすときには、ポートフォワーディングの設定を行わないと、PC内のブラウザでJupyterを動かすことができません。

Vagrant.configure("2") do |config|

  // --- ここから:追記 ---
  config.vm.network "forwarded_port", guest: 8888, host: 8888, host_ip: "127.0.0.1"
  config.vm.network "private_network", ip: "192.168.33.33"
  // --- ここまで:追記 ---

end

Jupyter Notebookの設定ファイル「~/.jupyter/jupyter_notebook_config.py」を作成し以下のように設定します。

# ~/.jupyter/jupyter_notebook_config.py
c = get_config()

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888

Jupyter Notebookを起動し、コンソールに表示されたURL、あるいは「192.168.33.33:8888?token=xxx」にアクセスします。

トラブルシューティング *

以下のようなエラーが出て、うまくインストールが完了しなかった場合、ハードウェア仮想化をオフに設定する必要があります。この場合、64bit版の方でも、32bit版をインストールしてください。

VT-x is not available (VERR_VMX_NO_VMX).

そして、以下のコマンドを実行して、ハードウェア仮想化をオフに設定します。

> cd "C:\Program Files\Oracle\VirtualBox"
> VBoxManage modifyvm (VMの名前) --hwvirtex off
> VBoxManage modifyvm (VMの名前) --vtxvpid off

このとき、VMの名前は、VirtualBoxの管理画面を開き、仮想マシンを選び、右クリックして[設定]メニューをクリックします。そして、[基本 > 一般 > 基本 > 名前]にあるのでコピーします。

仮想環境のバッティングに注意 *

また、当然と言えば、当然ですが、複数の仮想環境を同時に利用することはできません。例えば、VirtualBoxを利用していると、Docker for Windowsが使えませんし、Docker for Windowsを利用していると、VirtualBoxが利用できないことがあります。

【macOS】の場合: *

ターミナル.appを起動し、以下のコマンドを実行します。

$ mkdir ubuntu
$ cd ubuntu
$ vagrant init ubuntu/xenial64
$ vagrant up --provider virtualbox

メモ *