どうも、cloudpack の Docker 再履修中の かっぱ (@inokara) です。
はじめに
この記事見てヲヲって思って試してみました。
現状、Windows で Docker を体験するには MacOS X のように Boot2docker での利用が Docker のドキュメントにも記載されているので Windows で Docker が動くというのは Docker 本体が動くということではなく Docker のクライアントが動くということですのでご注意下さい…。
Docker for Windows
ビルド
ドキュメントに従って(ナゾって)ビルドする。
こちらをそのまま写経してみました。
はじめに Go をインストールします。
コマンドプロンプトを起動して以下を実行します。
git clone https://github.com/docker/docker.git c:gopathsrcgithub.comdockerdocker set GOPATH=c:gopath;c:gopathsrcgithub.comdockerdockervendor set DOCKER_CLIENTONLY=1 cd c:gopathsrcgithub.comdockerdockerdocker go build -v
GitHub から Docker のソースコードを取得して GOPATH の設定を行ってビルドを実行します。
とりあえず docker version
です。
docker ps の前に…
Amazon Linux にセットアップした Docker で Docker API を外部ホストから実行出来るように以下の通り修正します。
--- /etc/init.d/docker.bk 2014-11-19 12:59:04.679149165 +0000 +++ /etc/init.d/docker 2014-11-19 12:59:13.614960391 +0000 @@ -46,7 +46,7 @@ prestart printf "Starting $prog:t" echo "n$(date)n" >> $logfile - nohup $exec -d $other_args &>> $logfile & + nohup $exec -d -H tcp://0.0.0.0:4243 &>> $logfile & pid=$! touch $lockfile # wait up to 10 seconds for the pidfile to exist. see
修正後に Docker を起動すると外部ホストから Docker API のアクセスを受け付けるようになります。
$ docker -H tcp://127.0.0.1:4243 version Client version: 1.3.1 Client API version: 1.15 Go version (client): go1.3.3 Git commit (client): c78088f/1.3.1 OS/Arch (client): linux/amd64 Server version: 1.3.1 Server API version: 1.15 Go version (server): go1.3.3 Git commit (server): c78088f/1.3.1
上記のように各 Docker コンポーネントのバージョンを確認することが可能です。
docker ps
早速 Docker for Windows からアクセスしてみましょう。
あれ…Client の API バージョンと Server の API バージョンは同一である必要があるようです…。
上記のように Server の API バージョンは残念ながら 1.15 になっています…。
Amazon Linux でも Docker をビルドする
こちらを参考にして Docker をビルドします。
ビルドします。
mkdir ~/docker cd ~/docker/ git clone https://git@github.com/docker/docker cd docker sudo make build sudo make binary
しばらく待ちましょう…。
cd ~/docker/docker/bundles/1.3.1-dev/binary $ ls -l total 14084 lrwxrwxrwx 1 root root 16 Nov 19 01:22 docker -> docker-1.3.1-dev -rwxr-xr-x 1 root root 14410482 Nov 19 01:22 docker-1.3.1-dev -rw-r--r-- 1 root root 51 Nov 19 01:22 docker-1.3.1-dev.md5 -rw-r--r-- 1 root root 83 Nov 19 01:22 docker-1.3.1-dev.sha256
正常にビルドが終了したことを確認して、ビルドしたバイナリで Docker を起動してみます。
sudo ./docker -H 0.0.0.0:4243 -d &
以下のように標準出力にデバッグログが出力されるものの Docker が起動しました。
[1] 32406 INFO[0000] +job serveapi(tcp://0.0.0.0:4243) INFO[0000] Listening for HTTP on tcp (0.0.0.0:4243) INFO[0000] /! DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /! INFO[0000] +job init_networkdriver() INFO[0000] -job init_networkdriver() = OK (0) INFO[0000] Loading containers: start. .... INFO[0000] Loading containers: done. INFO[0000] docker daemon: 1.3.1-dev 0722c9b; execdriver: native-0.2; graphdriver: devicemapper INFO[0000] +job acceptconnections() INFO[0000] -job acceptconnections() = OK (0)
早速 docker version
で確認してみましょう。
$ docker -H tcp://127.0.0.1:4243 version Client version: 1.3.1 Client API version: 1.15 Go version (client): go1.3.3 Git commit (client): c78088f/1.3.1 OS/Arch (client): linux/amd64 INFO[0109] GET /v1.15/version INFO[0109] +job version() INFO[0109] -job version() = OK (0) Server version: 1.3.1-dev Server API version: 1.16 Go version (server): go1.3.3 Git commit (server): 0722c9b
おっしゃ、Server API のバージョンは 1.16 になっていますね!
改めて Windows for Docker
docker.exe -H tcp://xxx.xxx.xxx.xxx:4243 version
おお、キタ。
ついでに docker run も
docker.exe -H tcp://xxx.xxx.xxx.xxx:4243 run -t -i centos:centos6 /bin/bash<
おお、CentOS が起動した。
API の向こう側で動いているので Windows で Docker が動いているんや!って言えないけど…コマンドプロンプト内で CentOS が動いているように見えるのはちょっと不思議。
とりあえず
Windows 上でビルドした Docker クライアントを動かしてみました。
上記のようにコマンドプロンプト内で Docker クライアントが動いて docker run とか出来るのは不思議な気分です。
但し、現状では Docker をビルドしなければいけないのでお手軽にはといかないですが、是非、お試しくださいませ。
元記事はこちらです。
「Windows 版 Docker をビルドして試す」