NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Azure + Linux + Docker !!

こんにちは、上坂(@takashiuesaka)です。
先日10月24日~25日にマイクロソフト品川本社で開催されたDevOpsハッカソンに行ってきました。

DevOps ハッカソン開催報告 (9/5~6) & 次回予告
(リンクは9月5日~6日に開催された第1回目の様子)

DevOpsとは何か、を体感するためにはやはり手を動かさなければ!ということでDevOpsとハッカソンを組み合わせるというとても挑戦的なイベントでした。
ハッカソンは楽しく参加できたのですが、今回はハッカソンそのものについてのレポートではなくて、その日に(解説というよりも)ほぼデモばっかりだったのが逆にとても面白かった「Docker」についてです。

MS吉田氏(パクえ@yuya_lushさん)解説によるDockerデモだったのですが、どういうものかを頭では知っていても実際に目の前で動いているところを見たせいかとても魅力的で滅茶苦茶面白い!と感じまして、それからDockerを実際に触ってみたい!という熱い思いを持ちました。恐る恐る触ってみた結果を今回からしばらくお送りしたいと思います。

Linux環境は当然Azureで構築したいと思います。ここでささっと調べてみるとどうやらAzureにはDocker VM拡張というものがある、ということがわかりました。

 

  • Dockerのインストール
  • DockerEngine(サーバー側)の外側からでもクライアントから接続できるようにしてくれる

うーむ。なんかふつふつと疑問が湧いてきます。このDockerVM拡張、絶対使わなくてはならないものなのでしょうか?Dockerのインストールは自分で簡単に入れられます。外側からの接続可否はいずれ必要になるんだと思いますが今はDockerそのものを試したいだけなので今のところは特に必要ありません。もしかしたら、Dockerの定義ファイルであるDockerFileがコミットされたら別サーバーに立てたJenkinsから自動的にイメージ作る・・・なんて時とかに必要なのかもしれませんね。今の私にはまだ早いようです。

とはいえ、せっかく用意されている機能なのでこのAzure Docker VM拡張を利用したLinux環境を作ってみたいと思います。

AzureCLIによるLinux構築+DockerVM拡張のインストール

DockerVM拡張の導入はAzureCLIを使うのが一番簡単です。管理ポータル(プレビュー)でも可能ですが、証明書の用意が面倒なのでお勧めしません。
AzureCLIを使ったLinuxVMの作成+DockerVM拡張のインストールはこちらのページにやり方が載っています。記載された順番通りにやれば特に問題なくDockerが入るはずです。

Azure コマンド ライン インターフェイス (Azure CLI) での Docker VM 拡張機能の使用

と、リンク先にすべて任してしまうのも乱暴なのですが、要するに次のコマンドをコマンドプロンプトから1行入れるだけです。

azure vm docker create -e 22 -l "Japan East" <cloudServiceName> "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_3-LTS-amd64-server-20151020-en-us-30GB" <username> <password>

注意するのは、Ubuntuのバージョンぐらいです。記載にはAzureイメージギャラリーからUbuntu-14_04でgrepした結果から、最新のイメージを見つける、という手順があるのですが、私はここを敢えてもっと新しいやつ入れてやれ!と思ってUbuntu-15_10でgrepした結果を入れたら失敗しました。
一見うまくインストールできたように見えたのですが、DockerVM拡張が起動に失敗してDockerのインストールができませんでした。バージョン指定は守りましょう・・・。

さて無事にLinux+DockerVM拡張がインストールされると、管理ポータルではこのように表示されます。状態がSuccessになっていればOKです。(新しすぎたUbuntuだと、Errorになっていました!)

f:id:nextscape_blog:20210910001218p:plain

適当なSSHクライアントで接続して、docker -v と入力します。Dockerがインストールされていれば、こんな感じです。

                       f:id:nextscape_blog:20210910001235p:plain

さて、ついでに外側から、しかもWindowsから繋いでみましょう。Docker.exeをインストールすればいいのですが、単体のインストーラーが用意されていません。個人的なおすすめはchocolateyというパッケージマネージャーを使用してインストールすることです。これはyumとかapt-getみたいなものです。(と公式ページに書かれています。)

私なりの理解だと、これはWindows用のNugetです。Nuget?と聞くと.NETユーザーにはとてもなじみ深いですよね。こんなものがあるとは知りませんでした。Linuxの世界からちょっとAzureを見ただけですぐに新しい発見があって楽しいです!ではこちらのページに行って、chocolateyを入れましょう。

chocolatey

コマンドプロンプト開いて、コピペするだけなのがわかります。簡単ですね。次はこちらのページを訪れてください。Docker.exeを入れるためのコマンドが記載されています。

https://chocolatey.org/packages/docker

こちらもたったのコマンド一行コピペするだけです。簡単ですね。docer -v と入力したらバージョンが表示されるはずです。それでは先程構築したLinux上のDockerEngineに接続してみましょう。

docker --tls -H tcp://<cloudServicename>.cloudapp.net:2376 Info

<cloudServiceName>にはLinux+DockerVM拡張を構築した時に入力したクラウドサービス名です。最後のInfoはDockerのコマンドです。なので、これはLinux上で"Docker Info"と入力したのと同義です。
私の場合、このような結果が返ってきました。

f:id:nextscape_blog:20210910001310p:plain

無事にWindowsからLinux上のDockerEngineに接続できているようです。
それではDockerを色々といじって・・・といきたいところですが、長くなったのでまた今度。