
Windows10 Home + WSL2 環境に Docker Desktop をインストールして、Docker のチュートリアルをすすめて、コンテナ動作+サンプルのアプリを表示するまでの手順を記録してます。
※2020年3月くらいまで、Windows10 Professional で利用可能な Hyper-V 機能を使って Docker を動かすことが出来ましたが、Windows10 Home では Hyper-V が使えなかったので不便でした。
Docker を使って開発をすると、本番リリースがしやすい!とか以外にも、 環境構築がしやすい、テストをしやすいなんかのメリットがあります。
それに、複数人での開発とか、個人でも複数の環境を用意したりとかが簡単になり、トラブル対応も環境固有のものが減らせるメリットもありますし。
Windows10 Home以外 Windows10 Pro や Education はちょっと手順が違いますのでご注意を。 このページでは Windows10 Home についての記載です。
まずは Docker を導入できる状態かを確認しましょー。
Docker Desktop を入れる前に、まず WSL2 をつかえるようにします。 下でまとめてますので、まだの人はコチラからお願いします。
無事に WSL2 の導入が完了したら、Docker Hub という所からインストーラをダウンロードします。
公式 Docker HUB - Docker Desktop ダウンロード
2020年8月6日時点で、Stable(安定動作バージョン バージョン2.3.0.4)で問題なく動作しました。Stable は四半期毎にリリースされます。
ちょっと前だと Edge 版(テスト向け最新版)でないと動かなかったみたいです。Edge は毎月リリースされているようです。
当ページでは手動でのイストールとChocolatey でのインストールについて記載します。
Windows からコマンドラインで使えるソフトウェア管理ツールの Chocolatey を使ってる方でしたら、パッケージが用意されているので一瞬でインストールは終わります。 Chocolatey 本体のインストールは以下をご参照ください。
Chocolatey でパッケージ一覧を表示するとこんな感じ。↓
管理者権限で下のコマンドを入力するだけでインストールできます。
> cinst docker-desktop
便利です。
Scoop で Docker Desktop Scoop も Chocolatey みたいに開発関連アプリのインストールや更新、依存関係を管理できるアプリ管理ツールです。Scoop で公式バケット(リポジトリみたいなやつ)を覗いてみましたが、 Docker Desktop については見つからず。Scoop のコミュニティでは extras bucket に追加しようとしているようですが、結局公式bucketに追加されたのかわからず。どうも docker-for-windows はあるみたいだけどこれを入れればよいのかも。
ダウンロードしてきたインストーラを実行します。
WSL2 が正常に動作していれば最初の画面で WSL2 にチェックが入っているかと思います。
インストールが完了したら、デスクトップにできたショートカットか、
→ でアプリを起動できます。ここで、Docker Desktop が起動しない場合は、当ページの下の方に項目 Docker Desktop が起動しないとき で私が実施した対応を記録していますので、もし参考になれば。
初回はチュートリアルが表示されるので、まずはチュートリアルを実施して、Docker Image の作成とコンテナをつかって Image を動かすところまで進めたいと思います。
チュートリアル画面は後からでも呼び出せますので、中断しても大丈夫です。
「Start」で早速チュートリアル開始!
チートリアルで "Getting-Started" プロジェクトを git コマンドを使ってダウンロードしてきて docker イメージを作成してコンテナで動かす!という流れです。
そのため、ここからは git のインストールが必要です。
git をインストールしたら再度デモ再開。このチュートリアル画面でそのまま git ページへ行ってインストールした方はおそらく Docker Desktop を再立ち上げしたほうが良いです。(git コマンドを使えるようにするため、環境変数が変わっているはず)
ボタンを押して、git clone
が実行されます。
ダウンロードしてきた Getting-Started プロジェクトから、初めての Docker Image を作成(ビルド)します。わくわく。
ボタンを押して進めると docker build -t DockerImageのタグ
コマンドで Image ファイルがビルドされます。
Successfully build がログに出ているので無事にイメージが作られました。
さきほどビルドしたDockerイメージを動かすチュートリアルのようです。
docker run -d -p 80:80 \
--name docker-tutorial docker101tutorial
docker run 動かすイメージの名前
で新しくコンテナを作成して、イメージを動かします。
オプションの意味は下のとおりです。
オプション | 意味 |
---|---|
-d | detached mode(バックグラウンド)で動作させる |
-p 80:80 | コンテナ内のTCP/IPポート80をホスト側(親OS)のポート80 に紐づける |
--name docker-tutorial | 新しくつくるコンテナにつける名前 |
進めると、無事にコンテナが動作したようです。
ボタンを押すと、ブラウザが立ち上がり、ローカルホストのポート80にアクセスします。 無事にコンテナのアプリ(Getting-Started)にアクセス出来たみたいです。
立ち上げた Getting-Started の最初のページでおめでとうと祝福されました。ウレシイ!
めでたしめでたし。
途中でチュートリアルを停止しても、いつでも実施できます。
Docker Windows を起動すると、Windows のタスクトレイに Docker アイコンが表示されるので、 アイコンの上で
→ を選択すればチュートリアル画面を呼び出すことができます。
私の環境では、インストール直後、Docker Desktop アイコンをクリックしてもアプリが起動した様子もなく、エラーダイアログの表示おなくなにもでませんでした。
おそらく正常に動作はしていない様子。
この状態でコマンドラインから docker コマンドを実行すると以下のようなエラーが帰ってくる状態です。
C:\temp> docker -v
Docker version 19.03.12, build 48a66213fe
> docker run hello-world
C:\temp> docker run hello-world
docker: error during connect:
Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/create:
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.
なにやら「docker: error during connect: Post (http://Docker Engine のコンテナ作成アドレス)」にアクセスできなかった。もしかしたら接続する先の Docker のデーモンが起動してないのかもよ?(だいぶ意訳)
とのこと。これを見るとやはり Docker Desktop を起動しないとコマンドも使えないっぽい。
Docker Desktop の起動には WSL2 の Virtual Machine Platform のオプションが有効になっていることが必要なので以下で確かめましょう。
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
FeatureName : VirtualMachinePlatform
DisplayName : 仮想マシン プラットフォーム
Description : 仮想マシンのプラットフォーム サポートを有効にします
RestartRequired : Possible
State : Enabled
CustomProperties :
上記の State が Enable になっていなければ、下のコマンドで有効かしましょう! 自分の場合はこれが原因でした。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
念のため再起動したら、無事に Docker Desktop が起動しました。 他にも、一応 WSL1 に必要な Microsoft-Windows-Subsystem-Linux も有効であることを確認しておきます。
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
FeatureName : Microsoft-Windows-Subsystem-Linux
: 中略
State : Enabled
: 以下略
Enable でなければ以下で有効化しておきます。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
また、一応 WSL1 ではなく WSL2 を使う設定となっていることを確かめましょう。
コマンドプロンプトから wsl --list -v
を入力して、WSL2 が Docker Desktop に対して有効になっていることを確認します。
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: