OpenSSLが必要

Issueチケット(ENOENT error in azure vm docker create #1340)がたてられていたので、「うちの環境でもダメでした。」と書いたところ、「openssl入れたかい?入ってないとできないよ」とやさしく、教えていただきました。ありがとうございます。

opensslは、GnuWin32 OpenSSL 0.9.8h-1をインストールしました。

opensslをインストールをしただけでは、やはり、成功しませんでした。

証明書を作成する

azure vm docker createコマンドを実行するには、証明書が必要です。この証明書は、仮想マシン用のSSL証明書ではなく、Dockerコマンド内で利用するための証明書です。

作成するには次のコマンドを実行します。

openssl genrsa -des3 -out ca-key.pem 2048
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem
openssl genrsa -des3 -out server-key.pem 2048
openssl req -subj '/CN=iwatecker.cloudapp.net' -new -key server-key.pem -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
openssl genrsa -des3 -out key.pem 2048
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile.cnf
openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile.cnf
openssl rsa -in server-key.pem -out server-key.pem
openssl rsa -in key.pem -out key.pem

server-key.pemを作成する際のCommon Nameは作成する仮想マシンのホスト名を入力します。今回はiwateckerという名でVMを作成するので、iwatecker.cloudapp.netになります。

いざ、実行

実行する前に作成したファイルを ~\.dockerフォルダに置きます。

azure vm docker create iwatecker “Japan West” <image-id> <username>

今度は、見事成功しました。

Dockerの更新

ですが、Dockerのバージョンがやはり低いので自分であげます。

作業フォルダと作業ブランチを整えます。

mkdir tmp
cd tmp
git clone https://github.com/docker/docker.git
cd docker
git checkout -b work

あとは、DockerでDockerのコンパイル用のコンテナを用意してコンパイルします。

sudo service docker.io stop
sudo docker -d
sudo make build
sudo make binary

あとは、Dockerの実行バイナリを入れ替えます。

sudo cp tmp/docker/bundles/1.3.2-dev/binary/docker^C.3.2-dev /usr/local/bin/docker
sudo service docker.io start

Windowsクライアントからつなぐ

WIndowsクライアントからつないでみます。

docker --tls -H tcp://<hostname>:4243 version
Client API version: 1.16
Go version (client): go1.3.3
OS/Arch (client): windows/amd64
Server version: 1.3.2-dev
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): eba451b

ちゃんとバージョン情報が返ってきました。

感激です。

CATEGORIES