DockerをWindows7にインストールして触ってみる

Window7上でDockerをインストールしていじってみたメモです。

今更ながらDockerいじってみました。
Windows7上でやってみます。

インストール

DockerはLinux上で動作するので、Windows上で動かすためには仮想環境を用意します。
Docker Toolboxを利用すると、VirtualBoxという仮想化ソフトウェアもインストールしてくれます。
Docker Toolboxを利用して環境構築してみます。

BIOS設定

Windowsで仮想化ソフトを利用するには仮想化機能を有効にする必要があります。
仮想化機能を有効にするにはBIOS設定が必要です。
PCを起動してBIOS設定を表示します。
(BIOS設定はPCによって異なるので、「メーカー名 BIOS」で検索すれば設定方法が出てきます)

自分のPCではこんな感じでした。
f:id:pppurple:20160701033134j:plain

Overclockingのタブに移動して、CPU Featuresを選択。
f:id:pppurple:20160701033217j:plain

Intel Virtualization TechをEnabledへ設定。
f:id:pppurple:20160701033224j:plain

これでPCを起動すればよいはずです。
自分の場合は、VMWareVirtualBoxも過去にインストール済みなので、すでにEnabledになってました。

Docker Toolboxインストール

下記からDocker Toolboxをダウンロードします。
Docker Toolbox overview | Docker Documentation

ダウンロードしたインストーラを実行。
f:id:pppurple:20160701034032p:plain

そのまま次へ。
f:id:pppurple:20160701034154p:plain

gitやVirtualBoxがインストール済みの場合は、チェックを外していいですが、
面倒なので全部チェックして次へ。
f:id:pppurple:20160701034301p:plain

そのまま次へ。
f:id:pppurple:20160701034426p:plain

installを実行。
f:id:pppurple:20160701053631p:plain

完了。
f:id:pppurple:20160701053656p:plain

Docker起動

デスクトップに作成されたDocker Quickstart Terminalアイコンを実行します。
しばらく時間がかかった後、仮想環境が作成され起動します。
…のはずですが、下記の様なエラーになってしまいました。
"Looks like something went wrong in step 'Finalize' ... Please any key to continue..."
f:id:pppurple:20160701054142p:plain

調べてみると、どうやらバグ?の様です。
対応のために下記のファイルを修正します。
C:\Program Files\Docker Toolbox\start.sh

63行目あたりのclearをコメントアウトします。
start.sh

STEP="Finalize"
#clear
cat << EOF

ファイルを保存したら、再度実行してみます。
すると、下記の様にクジラのマスコットが表示され、うまく起動しました。
f:id:pppurple:20160701054742p:plain

ssh接続

teratermで接続してみます。
デフォルトではIPは192.168.99.100になっています。
f:id:pppurple:20160701060249p:plain

デフォルトではユーザ名/パスワードはdocker/tcuserになっています。
f:id:pppurple:20160701060327p:plain

接続するとboot2dockerのロゴが表示されます。

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.1, build HEAD : 7954f54 - Wed Apr 27 16:36:45 UTC 2016
Docker version 1.11.1, build 5604cbe
docker@default:~$

Docker操作

docker run

docker runコマンドで、CentOSのイメージを起動して、Hello Dockerとechoしてみます。
初回はDockerイメージがダウンロードされるため、少し時間がかかります。
ダウンロード後、echoコマンドが実行されてHello Dockerが表示されました。

docker@default:~$ docker run centos:latest /bin/echo 'Hello Docker'
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos

a3ed95caeb02: Pull complete
da71393503ec: Pull complete
Digest: sha256:1a62cd7c773dd5c6cf08e2e28596f6fcc99bd97e38c9b324163e0da90ed27562
Status: Downloaded newer image for centos:latest
Hello Docker

もう1度実行してみます。
2回目はDockerイメージがローカルに保存されているため、一瞬で表示されます。

docker@default:~$ docker run centos:latest /bin/echo 'Hello Docker'
Hello Docker
docker images

docker imagesコマンドでダウンロードしたイメージの一覧が表示されます。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              904d6c400333        3 weeks ago         196.8 MB
docker search

docker searchコマンドでDocker Hibに公開されているdockerイメージを検索します。
Apache httpサーバを検索してみます。
docker searchコマンドでhttpdを検索すると、部分マッチでたくさんヒットしました。
右側のOFFICIALと付いているのが公式のDockerイメージになります。

docker@default:~$ docker search httpd
NAME                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                               The Apache HTTP Server Project                  525       [OK]
centos/httpd                                                                        7                    [OK]
microwebapps/httpd-frontend         Httpd frontend allowing simple deployment ...   1                    [OK]
lolhens/httpd                       Apache httpd 2 Server                           1                    [OK]
rgielen/httpd-image-php5            Docker image for Apache httpd with PHP 5 b...   1                    [OK]
publicisworldwide/httpd             The Apache httpd webserver.                     0                    [OK]
objectstyle/httpd                   ObjectStyle HTTPD Image                         0                    [OK]
publici/httpd                       httpd:latest                                    0                    [OK]
robertdebock/docker-rundeck-httpd   A docker container running httpd to act as...   0                    [OK]
steelorbis/httpd                    local httpd                                     0                    [OK]
solsson/httpd                       Derivatives of the official httpd image         0                    [OK]
rgielen/httpd-image-simple          Docker image for simple Apache httpd based...   0                    [OK]
efrecon/httpd                       A micro-sized httpd. Start serving files i...   0                    [OK]
interferex/httpd                    Simple HTTPd Server + TC Rate Limiting          0                    [OK]
rgielen/httpd-image-drush           Apache HTTPD + Drupal Shell Docker image b...   0                    [OK]
learninglayers/httpd                                                                0                    [OK]
sohrabkhan/httpd                    Docker httpd + php5.6 (including php-mysql...   0                    [OK]
aintohvri/docker-httpd              Apache HTTPD Docker extension for legacy P...   0                    [OK]
openhades/httpd                     OpenHades Apache httpd container                0                    [OK]
alizarion/httpd                     httpd on centos with mod_auth_openid module     0                    [OK]
pogotech/httpd                      An Apache httpd image with mod_ssl.             0                    [OK]
jbpt/httpd                                                                          0                    [OK]
luistmac/httpd                      Apache Http Server Docker image based on t...   0                    [OK]
jckrz/httpd-htaccess-ssl            Apache httpd with SSL and .htaccess files ...   0                    [OK]
ibtech/httpd                        Apache HTTPD padrao da IBTech                   0                    [OK]

--starsオプションでstarの数で検索結果を絞れます。
starが6以上に絞る場合。

docker@default:~$ docker search --stars=6 httpd
NAME           DESCRIPTION                      STARS     OFFICIAL   AUTOMATED
httpd          The Apache HTTP Server Project   525       [OK]
centos/httpd                                    7                    [OK]
docker pull

docker pullコマンドでDocker Hubからイメージをダウンロードしてきます。
イメージ名にの後ろにコロンをつけてバージョンを指定できます。
httpdのバージョン2.4をダウンロードする場合。

docker@default:~$ docker pull httpd:2.4
2.4: Pulling from library/httpd
51f5c6a04d83: Pull complete
a3ed95caeb02: Pull complete
f3a0eba74ce0: Pull complete
64eb71d0a725: Pull complete
823f21c19a75: Pull complete
8e286d5abf35: Pull complete
Digest: sha256:ba28a514d23e9e77e2e40a6e0ab0c88d9b43b7fe85388ff3d9a528d7742347eb
Status: Downloaded newer image for httpd:2.4

docker imagesで確認してみると、確かに増えています。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               2.4                 b3d5273c8fd0        3 weeks ago         198.6 MB
centos              latest              904d6c400333        3 weeks ago         196.8 MB
docker inspect

docker inspectコマンドでdockerイメージの詳細を確認できます。
json形式で表示されます。

docker@default:~$ docker inspect httpd:2.4
[
    {
        "Id": "sha256:b3d5273c8fd0bef8b6ec060930157a90acb66e552acb8513fe91f7a0470d76e3",
        "RepoTags": [
            "httpd:2.4"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "",
        "Created": "2016-06-07T17:56:43.869283086Z",
        "Container": "8d03df6b984866109b5d7c1f8ad89e687d572ac2a642ac7110e52ec439f22b2b",
        "ContainerConfig": {
            "Hostname": "b0cf605c7757",
            "Domainname": "",
            "User": "",
              :
              :
              :
docker tag

docker tagコマンドでdockerイメージにタグ名を付けることができます。
httpd:2.4にtagを付けてみます。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               2.4                 b3d5273c8fd0        3 weeks ago         198.6 MB
centos              latest              904d6c400333        3 weeks ago         196.8 MB

docker tagコマンドでユーザ名の後ろにスラッシュを付けて、イメージ名とバージョンを指定します。

docker@default:~$ docker tag httpd:2.4 pppurple/httpd:2.4

確認すると新しいイメージが増えています。
IMAGE IDを見ると、元のイメージと同じIDがついています。
これは同じdockerイメージであることを指してるためです。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               2.4                 b3d5273c8fd0        3 weeks ago         198.6 MB
pppurple/httpd      2.4                 b3d5273c8fd0        3 weeks ago         198.6 MB
centos              latest              904d6c400333        3 weeks ago         196.8 MB
docker rmi

docker rmiコマンドでダウンロードしたdockerイメージを削除します。

docker@default:~$ docker rmi httpd:2.4
Untagged: httpd:2.4

確認すると消えていることが分かります。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
pppurple/httpd      2.4                 b3d5273c8fd0        3 weeks ago         198.6 MB
centos              latest              904d6c400333        3 weeks ago         196.8 MB

IMAGE IDを指定しても削除できます。

docker@default:~$ docker rmi b3d5273c8fd0
Untagged: pppurple/httpd:2.4
Deleted: sha256:b3d5273c8fd0bef8b6ec060930157a90acb66e552acb8513fe91f7a0470d76e3
Deleted: sha256:5796a5c5d2c02026556f3f84af314cbf9a31da09e73996f478016faace995772
Deleted: sha256:7c39b98b1eece8dad3a86b10f98c71e7612fabeaa0c8c9d1508d0f985ba18a57
Deleted: sha256:a4d60638240231d76762094138ce36c4296a0499d35c0cd36fa5cc3feaa0ef82
Deleted: sha256:ff8a8da0543e16bca8463e9ac62f3cc8af6cc98e0a3284255dafc9e93385054c
Deleted: sha256:9f953ec391af0d0802b4de23dfcf5e9bc87b40ac502aae28916eacf33b2b7ccb
Deleted: sha256:94e74b8c9675bf3b794df4f5a5ad95f93cc0168344bdaa3d1ad0d39dca994fb7
Deleted: sha256:423d17bd79c797e5c0d403a788a2b86140ebb37f758afce879f2cc689bcbbd55
Deleted: sha256:8a12ca546a1bd35ad5d1521645c95bf731bf86ccec2131f5499d1fcdfd5f8d43
Deleted: sha256:0c01e4298c8c6e3d7452f2a3e61addc98ac96242b0d679ae22ec02dc6961e0d7
Deleted: sha256:db80480bef0957c557c70969684a28889240dac9f55018d97da96cc2d8948c11
Deleted: sha256:4dcab49015d47e8f300ec33400a02cebc7b54cadd09c37e49eccbc655279da90

確認すると消えていることが分かります。

docker@default:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              904d6c400333        3 weeks ago         196.8 MB


こんなとこです。

【参考】