目的
Docker for Windows(現時点の最新は10.05.0-ce-win67(18263))をWindows 10にインストールして、CentOSを起動するまでの手順をまとめます。
事前準備
事前に、Docker公式サイトにて、Docker IDというアカウントを取得する必要があります。
以下のURLからサインアップを行いアカウントを作成してください。
https://store.docker.com/signup
アカウントを作成できたら、「手順」に進みます。
インストール~初回起動まで
Docker for Windows インストーラーをダウンロードする
Dockerの公式サイトからインストーラーをダウンロードします。以下のURLを開きます。
https://www.docker.com/docker-windows
「DOWNLOAD FROM DOCKER STORE」というボタンをクリックします。
「Please Login To Download」をクリックします。
ログイン画面が出ますので、「前提条件」にて取得したID/Passwordを入力してください。
「Get Docker」というボタンをクリックしてください。
これで「Docker for Windows Installer.exe」ファイルがダウンロードできます。ファイルは1つだけです。
以上でPCへのダウンロードまでが完了です。
PCへのインストール
次はインストールを行います。ダウンロードした「Docker for Windows Installer.exe」ファイルを、エクスプローラーから実行してください。
「このアプリがデバイスに変更を加えることを許可しますか?」というメッセージが出ましたら「はい」をクリックしてください。
ダウンロードが完了すると、下記の画面が出ます。そのまま「OK」を押してください。
※「Use Windows containers...]の行にはチェックボックスが付いていません。これはコンテナでWindowsを動かす場合のオプションです。今回はCentOSを動かしたいのでこのチェックボックスは不要です。
インストールが始まります。しばらく待機してください。
完了しましたら下記の画面が出ます。Closeを押して完了してください。
以上でインストールは完了です。
Docker for Windowsの初回起動
さて、インストールが完了しましたので次はいよいよ起動します。
デスクトップ上にある「Docker for Windows」のアイコンをダブルクリックし起動してください。
初回起動時に以下のポップアップが出るかもしれません。これは、今のPCではHyper-Vとコンテナ機能が有効になっていないためです。このまま「OK」を押し、有効にしましょう。なお、OSの再起動が走るとともにその後VirtualBoxが動作しなくなりますのでご注意ください。
なおOKを押した後はバックグラウンドでWindows Installerが動きます。見た目上反応がないので不安になりますが10分ぐらい放っておくと勝手に再起動が始まります。
再起動が完了しWindowsにログインすると、以下の画面が出ます。「Start」を押し、Docker for Windowsサービスを起動します。
「このアプリがデバイスに変更を加えることを許可しますか?」というメッセージが出ましたら「はい」をクリックしてください。
その後、デスクトップ上にある「Docker for Windows」のアイコンをダブルクリックし起動してください。
※起動には時間がかかります。気長に待ちましょう。
起動できましたら、以下のウィンドウが表示されます。Docker IDでログインしましょう。
ログインが完了しましたら、これでDockerが利用できる状態になったことになります。
CentOSコンテナの起動
現時点のバージョンではGUIはありません。GUIは次期バージョンでサポートされるようです。Kitematicというツールもありますがまずはコマンドで操作を覚えましょう。
オフィシャルCentOSコンテナイメージのダウンロード
まず、コマンドプロンプトを開きます。
以下のコマンドを実行しましょう。
c:\> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
これは、ローカルにインストールされているコンテナを表示するためのコマンドです。インストール直後なので何も表示されません。
次に、早速CentOSのコンテナイメージを、Docker Hubからダウンロードします。Docker HubとはDocker版GitHubのようなもので、コンテナを共有するサービスです。すでにDocker ID/Passwordを入手しログインできていますので、このサービスを利用することができます。
c:\> docker pull centos:latest latest: Pulling from library/centos 7dc0dca2b151: Pull complete Digest: sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322 Status: Downloaded newer image for centos:latest
はい、これでイメージのダウンロードが終わりました。環境に依存しますが数十秒で終了します。なおpullコマンドの「centos:latest」の意味は、centosリポジトリの、latestタグが付いたイメージという意味です。これを理解すればいろいろなリポジトリからいろいろなイメージをダウンロードできるようになります。
今ダウンロードしたイメージは以下のコマンドで表示できます。
c:\>docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 49f7960eb7e4 13 days ago 200MB
centosイメージの起動
さて、centosコンテナを起動しそのままbashシェルに接続します。
c:\>docker run -it centos bin/bash [root@b148de5ab780 /]# ls bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@b148de5ab780 /]# id uid=0(root) gid=0(root) groups=0(root)
このように、いきなり起動した状態になります。このままexitすれば、このコンテナは停止したうえで削除されます。行った変更は全て削除されます。
[root@b148de5ab780 /]# exit exit c:\>
イメージ自体は永続的ですが、起動中の変更は全て失われるということを意識してください。
centosイメージのバックグラウンド起動
さて、次はコマンドプロンプトの裏でバックグラウンド起動します。
c:\>docker run -i -d -t centos /bin/bash 96f6faad5c02f93fae0a9b23a41e697e313797256d3b5873f6d85232ed38f939 c:\>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96f6faad5c02 centos "/bin/bash" 8 seconds ago Up 6 seconds objective_morse
上記のように、起動した状態が続きます。これに接続し、コマンドを実行してみます。
c:\>docker attach 96f6faad5c02 [root@96f6faad5c02 /]# ls bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
exitせず、そのままbashシェルを抜けるためには、CTRL+p、CTRL+q、を続けて押します。この状態であれば、再度attachして継続できます。
c:\>docker attach 96f6faad5c02 [root@96f6faad5c02 /]# read escape sequence c:\>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96f6faad5c02 centos "/bin/bash" About a minute ago Up About a minute pensive_sinoussi
まとめ
以上のように、Windows環境上でもdockerコマンドが利用でき、Docker Hubからオフィシャルイメージをダウンロードし起動できることがわかりました。
タスクバーにはDockerアイコンが表示されていて設定を行えますが、この中に気になる設定項目があります。
KubernetesもDocker for Windowsに含まれているようですね。いろいろとスタンドアローンで楽しめそうです。
この記事は長くなってしまったので別の回でまとめてみようと思います。Windows上でCentOSがサクっと動くのはなかなか刺激的ですよ。
Docker 実践ガイド (impress top gear)