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 windowsのbashを使用してdocker
- dockerの各コマンドの確認
- Dockerfile
- docker-compose.yml
- docker -v によるマウント
上記の確認の前提として再インストールから始まります
注意
項目ごとに手順が別けております。
全部を実施しなくても動く場合があります。
何故ならdockerの各エラーの再現性にばらつきが多々あります。
各々心の眼で読み替えながら進めてください
手順
- docker toolbox,virtualbox,git for windowsのアンインストール
アンインストールには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-Vとvirtualboxは共存できないため片方にします。
無効化することによってもしかしたらエミュレータ系が動かなくなりますので注意。
windowsの検索欄にて "windows機能"と検索をかけるとこんな画面がでます。
場合によってはこちらのコマンドで可能 $ bcdedit /set hypervisorlaunchtype off
お疲れ様です。ここまで来たら再起動しましょう。
インストール編/ 再起動後(1回目)
- docker toolboxぱいせんを落としてくる
- そのまま起動してインスコ
画像だとチェック入ってませんが、念のため配布されているものでいれますチェックを入れてください。
途中にvirtualboxのオプションにてNDIS5の選択ボックスにチェックを入れてください。
- 何も深く考えずポチポチ推し進めて大丈夫です。
ここまで来たら再起動しましょう。(2回目)
初期設定 / 再起動後(2回目)
windows10と、virtualboxの特有問題が多いですが頑張ってください。もう少しです。
C:\Program Files\Oracle\VirtualBox
配下にある.exeファイルに互換性を入れる
VBoxHeadless.exe VBoxNetDHCP.exe VBoxSVC.exe VirtualBox.exe VBoxManage.exe 大体こいつらに互換性("windows 7")を付けてください
セキュリティーソフトを切ってください。もしくはdockertoolbox,git for windows,virtualboxを除外してください。
コマンドプロンプトを起動
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 Mac、Docker for Windowsがあるのでそちらを利用したほうが良いでしょう。
これで動かなかった場合その2
どうしてもVirtualBoxでDockerしたい場合は、VirtualBoxインストール時に
仮想マシンが使用するアダプタを指定します。
virtualboxをアンインストールし、ドライバをまたもや各削除 最新のvirtualboxインストーラをDLしてきて下記でインストール
もちろんアンインストールの後は再起動してください
ダウンロード先のフォルダへコマンドプロンプトで移動
明示的にNDIS6でインストールします C:\Downloads > VirtualBox-5.0.22-108108-Win.exe -msiparams NETWORKTYPE=NDIS6
インストール後また再起動し、ドライバ設定で有効になっているか確認。
コマンドプロンプトから起動して動かす。
まれにここまで来て、単に仮想マシンの削除→作り直しで動くパターンがあります
さらにエラーが続く
下記のエラー内容が発生した場合
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine
上記エラーの場合、海外フォーラムにて同様の現象の方々がいました
解決策
virtualbox4.3.12にダウングレードする。
上記のバージョンによって動くそうです。
マジでエラーわからん。
無事起動/作成完了したら
- コマンドプロンプトで
docker-machine env default --shell cmd
出力結果の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は動いているのにコマンドライン上でつながらないパターンです。
ホストアダプターの設定がへくってる可能性が原因の一つです。
docker_machineが動いてるよねの 確認方法としてteraterm等でつなげれます
接続先:192.128.99.100 ポート: 22 ユーザ名:docker パス:tcuser
ここら辺は仕方ない部分も多く、VBOXのアップデートなどで治る可能性もアリです。
起動後の動作確認
順番がおかしいですがIDEでDockerfileによるデプロイの確認
そしてポートが割り当てられてブラウザで見れるよね確認
そして基本的なコマンドぅ
$ docker -v $ docker info $ docker run hello-world $ docker run -d -P nginx $ docker run -itv ホストpath:コンテナpath ubuntu bash
そしてまさかのボリュームマウントエラー。
/C/user配下でのボリュームマウント
それ以外でのマウント
そしてこの人の発言。
vagrantも同様ですが。
- ホストマシン
- Virtualbox
- docker-machine
- コンテナ
ボリュームマウントをするにはここら辺を意識して通さなきゃいけないみたい。
①~② で新規に共有フォルダの作成をします
③~④ ③でフォルダの名称 ④で実際のパス
コマンドライン上で
$ 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→コンテナ
といった具合にファイルをマウントしていく様です。
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社畜でも半日使って解析なんかする必要がありません。
ええ、そうですとも。
実は自分はここの方法で動かなくて死んでました。
下記の方法で治ったけどね!
では、またどこかで!!