タイトルの通り。
現在進行形で進めているところなので、どういった方法を試したのか、何がダメなのかを備忘録がてら書いていくことにします。
環境・ツールのバージョン
- Windows 10 pro
- Docker 18.09.0
- VirtualBox 5.2.22
ケース1:Docker for Windows うぃず Hyper-V
以下の記事を参考にしました。
俺のDocker - Windows10にインストール
1.Docker for Windowsをインストール
以下より。
https://store.docker.com/editions/community/docker-ce-desktop-windows
安定版である「Get Docker CE for Windows(stable)」を選択。
インストールが終わったらコマンドプロンプトを開いてコマンド実行。
$ docker --version
バージョンが表示されればインストール成功。
2.Hyper-Vマネージャーで確認
問題:Hyper-Vマネージャーなんてないやん!
解答:そら(Hyper-V有効化してないなら)そうよ
というわけで有効化していきます。
「Windowsの機能の有効化または無効化」を開き、「Hyper-V」にチェックを入れる。
OKを押すと再起動しろやワレェみたいな事を言われるので素直に従う。
更新が入るので、通常の再起動よりも時間が掛かる。ワレェ…
再起動後、Hyper-Vマネージャーを起動!
Docker for Windowsが正常にインストールされていれば「ModyLinuxVM」なるものが……
Hyper-V「Mody……? 知らない子ですね」
アホの子な先輩かわいい!
数時間さまよった結果……
解答:そら(一般ユーザーなら)そうよ
どうやらログオンしているユーザーが管理者でないと反応してくれない模様。
というわけで貧弱一般ユーザーの私は急遽管理者ユーザーに昇格したのだ。。
3.httpdイメージをダウンロード
参考にしたサイトはこちら。
Docker 公式 httpd イメージを利用して Docker を体験してみよう
Apacheを起動するには「httpd」というイメージをダウンロードしなければならない、らしい。
早速コマンドプロンプトを開いて進めていきます。
$ docker pull httpd
pullだけだし、うまくいくでしょ!
error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/images/create?fromImage=httpd&tag=latest: open //./pipe/docker_engine: Access is denied. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
だめでした。
貧弱日本人たる私は早速google翻訳パイセンに詰め寄ります。
曰く、「docker daemonが動いてないよ」とのこと。そんくらい分かる
仕方ないのでよさげなサイトがないか検索。
以下のサイトを見つけたので参考にしました。
dockerコマンドをコマンドプロンプトから利用
要約すると、アクティブなホストがいれば解決できるらしい。
対応1:まずはホストがあるか確認しましょう。
$ docker-machine ls
ホストはありませんでした。次!
対応2:ホストを作成しましょう。
$ docker-machine create -d virtualbox default
(virtualbox…? インストールしてないけどなんとかなるか)
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
だめでした(当たり前)。
というわけでVirtualBoxをインストールします。
https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp
そして再度ホスト作成のコマンドを実行します。
これで解決でしょ!
Running pre-create checks...
Error with pre-create check: "This computer is running Hyper-V. VirtualBox won't boot a 64bits VM when Hyper-V is activated. Either use Hyper-V as a driver, or disable the Hyper-V hypervisor. (To skip this check, use --virtualbox-no-vtx-check)"
英語力のない私でも雰囲気でわかります。
Hyper-Vが邪魔してるって?
Hyper-V「私とは遊びだったのね!」
仕方ないので無効化します。先輩ごめんなさい
これ、うまくいっても見出し詐欺では……
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER
ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v18.09.0
ホスト作れました!
対応3:ホストをアクティブにします。
以下のコマンドを実行すればアクティブになるそう。
$ eval $(docker-machine env default)
eval…?
嫌な予感しかしない。
'eval' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
知ってた
色々調べましたが、windowsのコマンドプロンプトでevalを実行してるサイトは見当たりませんでした。
-追記-
なんでホストをvirtualboxで作ってんだこいつは。
Hyper-Vを指定することも可能なようなので、検証しました。
参考サイトはここです。
####1.仮想スイッチを設定
Hyper-Vマネージャーを開きます。
画面右の「仮想スイッチマネージャー」を押下します。
次に「仮想スイッチの作成」を押下します。
任意の名前をつけてOKボタン押下。
その後、「ModyLinuxVM」を右クリック>「設定」を押下すると、設定画面が出てきます。
デフォルトでハードウェアの追加タブが開かれているので、
「ネットワークアダプター」を選んで「追加」ボタンを押します。
仮想スイッチのところを先ほど作成した仮想スイッチに設定し、
OKで完了!
2.Hyper-Vでホスト作成
ここからは管理者権限のPowerShellを使っています。
PS C:\Windows\system32> docker-machine create -d hyperv default
わくわく。
~中略~
(default) Creating SSH key...
(default) Creating VM...
(default) Using switch "visual switch"
(default) Creating VHD
(default) Starting VM...
(default) Waiting for host to start...
動かない・・・。
一度キャンセルして、再度実行。
PS C:\Windows\system32> docker-machine create -d hyperv default
Docker machine "default" already exists
あっ、そう・・・。
気を取り直して、ホストがアクティブかチェック。
PS C:\Windows\system32> docker-machine active
default
大丈夫みたいですね。
それならpullできるでしょ! 早速実行!
PS C:\Windows\system32> docker pull httpd
Using default tag: latest
error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/images/create?fromImage=httpd&tag=latest: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
ナンデ!?
・・・もう少し調査します。
ケース2:Docker for Windows うぃず VirtualBox
アクティブじゃないなら直接弄ればいいじゃない!
という魂胆で、ケース1で作成したホストを動かしていきます。
###1.VirtualBoxから仮想マシンを開く
2.httpdイメージをダウンロード
ホストが云々うるさかったコマンドプロンプト君の事は忘れて、再度httpdイメージのダウンロードをしていきます。
$ docker pull httpd
結果・・・
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 2a51bb06dc8b 5 days ago 132MB
できました! よしっ!
3.httpdイメージからコンテナを作成
いよいよコンテナを作成します!
これが出来れば動かせるって前述の参考サイトが言ってました!
勝ったなガハハ!
$ docker run -d -p 8080:80 httpd
ウィニングランは気持ちがいいですねえ。
謎の大なり君が出張ってきただけで、うんともすんともしません。
本来ならば作成されたコンテナのIDが表示されるのですが。。
エラーが出ないので調べようもない・・・。
うーん・・・次!
ケース3:DockerToolbox
ケース1でつまづいたevalなんたらというのは、DockerToolboxであれば実行可能と小耳に挟みました。
どこで拾った情報なのかは取得し忘れました、すみません。
とにかくDockerToolboxとかいうのを入れて試してみようじゃありませんか!
早速以下のサイトよりWindows版をインストールしました。
https://docs.docker.com/toolbox/toolbox_install_windows/
そして「Docker Quickstart Terminal」を起動!
etails: 00:27:53.530227 Console: Machine state changed to 'Saved'
Looks like something went wrong in step ´Checking status on default´... Press any key to continue..
Docker Quickstart Terminal「じゃあの」
キーを押したら即サヨナラしてしまいました。一期一会にも程があります。
何が起きたのか、再度google翻訳パイセンを問い詰めます。
曰く、「マシンが「保存済み」らしいよ?」とのこと。
マシンってdefaultのことだよな…とVirtualBoxを確認してみると・・・
確かに保存になってる!
じゃあ起動すりゃいいじゃん!
アイエエエ!?
だ、大丈夫だ・・・コマンドプロンプトからホストを再起動すれば・・・
$ docker-machine restart default
Restarting "default"...
Waiting for SSH to be available...
固まった・・・
ケース4:Docker いん Vagrant
Hyper-Vは途中からいらない子、VirtualBoxは大なり、Toolboxは5秒で破局と八方塞がり。
最後の手段として、Vagrantで仮想環境を作り、その中にdockerを乗っける形を試してみます。
それもうvagrantでいいのでは
…現在進行形なので、まとまったら追記します。
#おわりに
docker難しすぎません…?