dockerには大きく2つのバージョンがあります。
新しいアーキテクチャの「Docker Desktop for Windows」と、少し前のWindowsでも使える「Docker Toolbox on Windows」です。
新しい方を使うには、「Windows10 ProでEnterpriseまたはEducationエディションであること、Hyper-Vという仮想化の仕組みが有効になっていること」という制限があります。
それ以外の場合は、「Docker Toolbox on Windows」を使うことになりますので、この記事ではそちらの方のインストール手順について解説します。
「Docker Toolbox on Windows」の利用環境の確認
toolbox版のdockerを使うにも、以下のようなハードディスク、OSの要件を満たしている必要があります。
- Windows7以上であること(Windows7、WIndows8,8.1、WIndows10Home)
- 64bitOSであること
- 仮想化の仕組み(virtualization)が有効になっていること
特に、最後のvirtualizationはインストール前に確認しておかないと、インストール後にエラーで悩まされることになります。。
有効になっているかどうかを確認するには、タスクマネージャーを開いて、「パフォーマンス」タブの「仮想化」の項目を確認します。
Docker Toolbox on Windowsのインストール
上記の環境が確認出来たら、さっそくインストールしていきましょう。
インストールにより、以下のソフトがパソコンに入ります。
- Docker Client for Windows
- Docker Machine for Windows
- Docker Compose for Windows
- Oracle VM VirtualBox
- Kitematic for Windows
- Git MSYS-git UNIX tools
もし、すでにGitやVirtualBoxがインストールされている場合は、再度インストール必要はないので、インストールの過程で、チェックを外します。
また、VirtualBoxはシャットダウンしておきましょう。
VirtualBoxやGitがあらかじめ入っている場合は、ここでチェックを外します。
また、Boot2Dockerは、Dockerを使うためのVM用イメージです。
最新版にしておいた方が良いので、「Upgrade Boo2Docker VM」もチェック入れておきます。
最後のチェックは入れておいた方が良いという記事も多いです。私の環境ではチェックしていなくても特に問題は起きていないですが、念のため、チェックを入れていてもいいかもしれません。
Dockerの初期化と初回起動を行う
インストールが終わったら、「DockerQuickstartTerminal」をダブルクリックします。
すると、VirtualBoxに「default」という名前でVMが作成され、各種初期化が完了したら、以下のような画面になります。
「Kitematic (Alpha)」をダブルクリックしても初期化を行うことができます。こちらはGUIで可能です。初期化の内容は変わらないので、どちらでやってもいいです。
ただ、こちらでやると、以下のようにエラーが出て、驚くかもしれません。この場合は、右側の「USE VIRTUALBOX」をクリックすると、初期化が始まります。
初期化が終わると、以下のような画面になりますので、左下の「DOCKER CLI」をクリックすると、Windows Power Shellが起動します。
「DockerQuickstartTerminal」の場合は、MINGWのシェルプロンプトが開くので、使いやすい方を選べばOKでしょう。
インストールと初期化が正常に行われたかどうかの確認
これでインストールと初期化が終わりました。
ここまで正常に行われているか、確認してみましょう。
docker version
と入力して実行すれば、クライアント(Client)とサーバー(Server)のバージョンが表示されるはずです
また、VirtualBoxにはdefaultという名前のバーチャルマシンができており、この中でdockerが動いています。
VirtualBoxマネジャーを開くと、それが確認できますね。
docker-machineについて
Windowsで「Docker Toolbox on Windows」を使って行く場合、「docker-machine」というコマンドがたまに出てきます。
「docker-machine」はVirtualBoxやVMWareなどの仮想化ソフト上にdocker環境を構築・操作する時に使われるコマンドなのです。
そのため、
$ docker-machine create --driver virtualbox <任意のVM名>
とすると、default以外の名称のVMを新たに作成することができます。
また、実際にホストOS上にあるVMを確認するには、
$ docker-machine ls
を入力します。
すると、
のように表示されます。
コンテナを起動してみる
それでは、最初のコンテナを起動してみます。
公式のリポジトリに「hello-world」イメージがあるので、それを使ってコンテナ起動します。
docker image pull <イメージ名>
でイメージをダウンロードしてきます。
$ docker image pull hello-world:latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
イメージが取得できたか、確認してみましょう。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 3 weeks ago 1.84kB
イメージをローカルPCにpullしてダウンロード出来たので、次に、このイメージからコンテナを起動します。docker container run <image-name>
コマンドを使用します。
$ docker container run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
ローカルのPCにあるコンテナを確認するにはdocker container ls
コマンドを使います。
「-a」オプションを付けると、停止しているコンテナも含めてすべてのコンテナが表示され、つけないと、現在アクティブなコンテナのみ表示されます。
hello-worldコンテナは、上記のメッセージを表示後、すぐに停止するので、「3 minutes ago Exited (0)」のように表示されています。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba8c94a83783  hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago condescending_joliot
Docker Toolboxでファイル共有について
Docker Toolboxでのファイル共有は、最初は少しわかりにくいかもしれません。
というのも、Docker Desktopだとdockerのホストとdockerコンテナのファイル共有だけで済みますが、toolboxだとさらにVMとdockerホストとのファイル共有がはさまっているからです。
つまりはこういうこと。
Docker Desktopの場合
「dockerコンテナ」 ⇔ 「dockerのホスト(自分のPC)」
Docker Toolboxの場合
「dockerコンテナ」 ⇔ 「dockerのホスト(VM上)」 ⇔ 「VMのホスト(自分のPC)」
「dockerのホスト(VM上)」 ⇔ 「VMのホスト(自分のPC)」の共有はVMのマネージャの「設定」⇒「共有フォルダー」で行います。
ここに、初期の設定では、「c:\Users」が設定されていることが分かります。
toolboxの場合、dockerのVolumesでコンテナとのファイル共有を行った場合は、ここにも追記しないと自分のPCからファイルが見えないので、注意してください。