読者です 読者をやめる 読者になる 読者になる

This is a Pen

プログラミングとITと日記

windows10でDocker Toolboxのエラーとインストール【ざっくり手順あり】

docker1.11.2がリリースされたので、wktkしながらupgradeし
「やっほいーー!あそぶぜぇ!」
そう、半日全部持っていかれるまでは・・



acchi-muite-hoi.hatenablog.com

さりげなくdocker for windowsのstable(安定)版が出たようです。
細かい検証はまだですがとりあえず。



Docker使用環境

  • docker toolboxを入れた事のある端末
  • Windows10 (pro)
  • git for windows を使っている

エラーと動作について

主にwindows環境でdockerをやらんとしてる方
dockerをupgrade、windowsのアップデートや
ふとしたことで動かなくなった人向け

  • docker起動の再にIP取得でぐるぐる
  • upgradeから立ち上がらない
  • upgradeから立ち上がらない(2回目)

この記事の目的/ゴール

  • dockerが動く ← これ大事
  • git for windowsbashを使用してdocker
  • dockerの各コマンドの確認
  • Dockerfile
  • docker-compose.yml
  • docker -v によるマウント

上記の確認の前提として再インストールから始まります

注意

項目ごとに手順が別けております。
全部を実施しなくても動く場合があります。

何故ならdockerの各エラーの再現性にばらつきが多々あります。
各々心の眼で読み替えながら進めてください



手順


アンインストールにはgeekがおすすめです。
取り残されたレジストリも綺麗にしてくれます。

geekでuninstall後下記を実施

  • C:\Users\ユーザ名\.docker 配下をすべて削除
  • C:\Users\ユーザ名\.VirtualBox 配下も削除
  • C:\Windows\System32\drivers 配下にある  
VBoxDrv.sys
VBoxNetAdp.sys
VBoxNetFlt.sys
VBoxUSBMon.sys

上記を削除。それぞれvirtualboxの取り残されたドライバです。
無い場合は残っているものを削除
  • windowsボタン + Rにてregeditと入力。で続けてレジストリも削除
\HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\Services\

にて VBOX ではじまる各フォルダを削除。

その後終了する。再起動と聞かれますがまだしません。


* コントロールパネルのネットワーク接続にてvirtualboxのドライバが無いか確認、ある場合には削除。

  • Windows10 proの場合にはHyper-Vを無効化する


Hyper-Vvirtualboxは共存できないため片方にします。
無効化することによってもしかしたらエミュレータ系が動かなくなりますので注意。


windowsの検索欄にて "windows機能"と検索をかけるとこんな画面がでます。

f:id:pierrot-nose:20160620021720p:plain

場合によってはこちらのコマンドで可能

$ bcdedit /set hypervisorlaunchtype off


お疲れ様です。ここまで来たら再起動しましょう。


インストール編/ 再起動後(1回目)


f:id:pierrot-nose:20160620021616p:plain

画像だとチェック入ってませんが、念のため配布されているものでいれます
チェックを入れてください。

途中にvirtualboxのオプションにてNDIS5の選択ボックスにチェックを入れてください。

  • 何も深く考えずポチポチ推し進めて大丈夫です。

ここまで来たら再起動しましょう。(2回目)


初期設定 / 再起動後(2回目)


windows10と、virtualboxの特有問題が多いですが頑張ってください。もう少しです。

  • C:\Program Files\Oracle\VirtualBox 配下にある.exeファイルに互換性を入れる

f:id:pierrot-nose:20160620021610p:plain

VBoxHeadless.exe
VBoxNetDHCP.exe
VBoxSVC.exe
VirtualBox.exe
VBoxManage.exe

大体こいつらに互換性("windows 7")を付けてください


docker-machineを作成します
$ docker-machine --debug create -d virtualbox default

エラーの時はエラー処理され落ちます。
それ以外はvirtualboxパイセンとwindows10先生が戦ってます。



起動方法

$ docker-machine start default //起動
$ docker-machine stop default //終了




これで動かなかった場合その1


ホストオンリーアダプターで激おこ

docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.1/24" default

WindowsでもMacでも、VirtualBox経由でのDocker利用ではネットワークアダプタ関連の問題が発生します。
仮想マシンを作る際に正しくIPが割り当てられないとか・・

現在(2016年11月時点)ではDocker for MacDocker for Windowsがあるのでそちらを利用したほうが良いでしょう。


これで動かなかった場合その2


どうしてもVirtualBoxでDockerしたい場合は、VirtualBoxインストール時に
仮想マシンが使用するアダプタを指定します。

virtualboxをアンインストールし、ドライバをまたもや各削除 最新のvirtualboxインストーラをDLしてきて下記でインストール

もちろんアンインストールの後は再起動してください

ダウンロード先のフォルダへコマンドプロンプトで移動

明示的にNDIS6でインストールします
C:\Downloads > VirtualBox-5.0.22-108108-Win.exe -msiparams NETWORKTYPE=NDIS6


インストール後また再起動し、ドライバ設定で有効になっているか確認。

f:id:pierrot-nose:20160620021546p:plain

コマンドプロンプトから起動して動かす。

まれにここまで来て、単に仮想マシンの削除→作り直しで動くパターンがあります



さらにエラーが続く


下記のエラー内容が発生した場合

VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine


上記エラーの場合、海外フォーラムにて同様の現象の方々がいました


解決策

virtualbox4.3.12にダウングレードする。

上記のバージョンによって動くそうです。
マジでエラーわからん。




無事起動/作成完了したら

出力結果のSETの行を張り付けて、PCにdocker-machineを認識させてください。



git for windows

  • C:\Users\ユーザ名\.bashrcをエディタで開く
  • eval "$(docker-machine env default --shell terminal)" を追記して保存

.bashrcがなかった場合作ってください

ここまで来て、command not foundなんて言われたらこれを1行目に記述してください

  • export PATH=/opt/local/bin:$PATH パスを認識させます



パスの読み順

環境変数によってはすべてが台無しになる場合があります。
コマンドライン上で
where <対象のコマンド>と打っていくとパスが表示されます。

#### 例 ####
$ where git
C:\Program Files\Git\mingw64\bin\git.exe
C:\Program Files\Git\cmd\git.exe

複数ヒットがある場合は上から順番に読まれていきますので
使いたいものを厳選して環境変数内のPATHをいじってください。バックアップは忘れずに




ここまで来て動かなかった方。
virtualboxをやめてHyper-Vに直接インストーるするのもアリです



頻発するエラーについて

大まかに2つあって

  • VirtualBoxのバグ(windowsでの)
  • 作成されたdocker-machineとホストマシン間の通信


前者については

デバッグのログでヒントをもらうか
$ docker-machine --debug create -d virtualbox default

エラーをもとにググるしかない気がします。すんません




後者については
docker-machineは動いているのにコマンドライン上でつながらないパターンです。

f:id:pierrot-nose:20160620034828p:plain

ホストアダプターの設定がへくってる可能性が原因の一つです。

docker_machineが動いてるよねの 確認方法としてteraterm等でつなげれます

f:id:pierrot-nose:20160620035007p:plain

接続先:192.128.99.100
ポート: 22
ユーザ名:docker
パス:tcuser

ここら辺は仕方ない部分も多く、VBOXのアップデートなどで治る可能性もアリです。






起動後の動作確認

順番がおかしいですがIDEでDockerfileによるデプロイの確認
そしてポートが割り当てられてブラウザで見れるよね確認

f:id:pierrot-nose:20160620021524p:plainf:id:pierrot-nose:20160620021531p:plain


そして基本的なコマンドぅ

$ docker -v
$ docker info
$ docker run hello-world
$ docker run -d -P nginx
$ docker run -itv ホストpath:コンテナpath ubuntu bash

そしてまさかのボリュームマウントエラー。


/C/user配下でのボリュームマウント

f:id:pierrot-nose:20160620021517p:plain

それ以外でのマウント

f:id:pierrot-nose:20160620021511p:plain

そしてこの人の発言。

f:id:pierrot-nose:20160620021457p:plain

vagrantも同様ですが。

  • ホストマシン
  • Virtualbox
  • docker-machine
  • コンテナ

ボリュームマウントをするにはここら辺を意識して通さなきゃいけないみたい。

f:id:pierrot-nose:20160620040405p:plain

  • ①~② で新規に共有フォルダの作成をします

  • ③~④ ③でフォルダの名称 ④で実際のパス

  • コマンドライン上で

$ docker-machine ssh default 'sudo mkdir -p /docker_machine/上のパス'
$ docker-machine ssh default 'sudo mount -t vboxsf -o uid=0,gid=0 DEV_WORKSPACE /docker_machine/上のパス'

ホスト上のフォルダをvirtualboxへ共有↓
virtualboxからdocker-machineにてマウント設定を行う↓

ホスト→docker-machine→コンテナ
といった具合にファイルをマウントしていく様です。

f:id:pierrot-nose:20160620040412p:plain

docker -v にて認識してくれない場合

docker run -it -v //tekitou/hosuto/path:/konntena/path ubuntu bash

パス指定の際に余分に("/")スラッシュを追加すると動くようです。



まとめ

よっぽどの無い限りdocker toolboxのupgradeはおすすめしません。
素直に古いversionか、hyper-vで起動するか。
docker for windows betaの正規リリースをお待ちください。

そうすれば、連続勤務22時間のSier社畜でも半日使って解析なんかする必要がありません。
ええ、そうですとも。


実は自分はここの方法で動かなくて死んでました。
下記の方法で治ったけどね!

t.co




では、またどこかで!!

Related Posts Plugin for WordPress, Blogger...