Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BluemixでDockerを試してみる

3,505 views

Published on

BluemixでDockerを用いてnginxを動かしてみます。

Published in: Engineering

BluemixでDockerを試してみる

  1. 1. 2015/4/7 S.Hanai
  2. 2. 本資料の記載内容は、私が個人的に調べた内容であり、正式な日本IBMのテストや レビューを受けておりません。内容について、できる限り正確を期すよう努めてはおり ますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使 用先の責任において使用されるべきものであることを、あらかじめご了承ください。
  3. 3.  現在βのBluemixのDockerサポートを使って みる例
  4. 4.  Dockerの仕組み、基本的な操作について 知っていること  Linuxターミナルの基本的な操作について 知っていること
  5. 5.  Linux用のアプリケーション・コンテナ  Dockerfileという定義ファイルから、アプリケー ション稼動環境イメージを作成できる  Dockerfileさえあれば同じ環境を簡単に配布で きる  Bluemixでは、Docker用のprivateなイメージ・レ ポジトリを持つことができる  現在はBluemixのDockerはβ版  現在のところVolumeのサポートは20GBまで
  6. 6. ローカル開発環境 Docker nginx Linux Dockerfile I社PaaS Docker nginx A社PaaS Docker nginx M社IaaS Docker nginx Linux G社IaaS Docker nginx Linux Dockerfileを管理しておけば、様々な ベンダーのCloudに容易に乗り換え が可能に Dockerfileを管理しておけば、ローカ ルとサーバーとで同一環境が容易に 再現できる
  7. 7.  Dockerを動かす環境としてUbuntu 14.04 64bit版を使用します  WindowsやMacでもDockerは動作しますが (boot2docker)、その場合でもVirtualBoxなど 仮想環境を用意した方がセットアップは楽  既にDocker環境をお持ちの方は「SSH鍵の 設定」までスキップしてください
  8. 8.  サーバー版UbuntuをVirtualBoxにインストー ルする手順を簡単に解説します  VirtualBoxは自分でインストールしておいてく ださい(https://www.virtualbox.org/)  残りはコマンドラインで実行します 今回はMac上で作業していますが、他の環境 でも基本は同じはずです
  9. 9.  Ubuntu取得(wgetが無い環境ではブラウザで) wget http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd64.iso  VM作成 VBoxManage createvm --name "Ubuntu 14.04 Server" –register  メモリ容量設定、インストール用DVD設定 VBoxManage modifyvm "Ubuntu 14.04 Server" --memory 4096 --acpi on -- boot1 dvd  NATのNIC追加 VBoxManage modifyvm "Ubuntu 14.04 Server" --nic1 nat  ホストPCとの通信用にHost only networkのNICを追加 VBoxManage hostonlyif create VBoxManage modifyvm "Ubuntu 14.04 Server" --nic2 hostonly -- hostonlyadapter2 vboxnet0  ディスク作成(容量はお好きに) VBoxManage createhd --filename Ubuntu_14_04_Server.vdi --size 30000
  10. 10.  ディスクコントローラ作成 VBoxManage storagectl "Ubuntu 14.04 Server" --name "IDE Controller" -- add ide  HDDを接続 VBoxManage storageattach "Ubuntu 14.04 Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Ubuntu_14_04_Server.vdi  DVDを接続。インストールイメージの場所は自分のものに合わせる VBoxManage storageattach "Ubuntu 14.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /tmp/ubuntu- 14.04.1-server-amd64.iso  起動 VBoxManage startvm "Ubuntu 14.04 Server"  Ubuntuのインストーラが起動するのでガイドに従ってインストール。最後にインス トールアプリケーションの選択画面があるので、OpenSSHを入れておく。他は入 れなくて良い
  11. 11.  インストールが終わったら、DVDを外しておく VBoxManage modifyvm "Ubuntu 14.04 Server" --boot1 disk VBoxManage storageattach "Ubuntu 14.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium none
  12. 12.  Ubuntu側で鍵を作ります $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/you/.ssh/id_rsa): ← Enterキー Created directory '/home/you/.ssh'. ← Enter Enter passphrase (empty for no passphrase): ← パスフレーズを入力します Enter same passphrase again: ← もう一度パスフレーズを入力します Your identification has been saved in /home/you/.ssh/id_rsa. Your public key has been saved in /home/you/.ssh/id_rsa.pub. 一種のパスワード。 忘れないように 自分のホームディレク トリ/.sshに鍵のペア が生成される
  13. 13.  秘密鍵のホストPCへの転送 VM側で、cat ~/.ssh/id_rsa してクリップボードなどで、自分のPCの~/.ssh/id_rsa に転送する(VirtualBoxのクリップボードを有効にしておく)  自分のPC側のパーミッションに注意(.sshは700、id_rsaは400) chmod 700 ~/.ssh chmod 400 ~/.ssh/id_rsa ホスト側がLinux/Macであれば以上で設定完了。Windowsなどのマニアックな環 境の場合はググッてCygwinなりPuttyなりを頑張って設定してください。  VM側で公開鍵をauthorized_keysにコピー cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys  VM側でhost only interfaceのipを確認 ifconfigを実行。
  14. 14. hostonly adapterのIP
  15. 15. -L9080:localhost:9080はポート転送指定。この例では、 ホストPCのポート9080へのアクセスを、VM側のポート 9080に転送できます。 つまりVM側でポート9080をリッスンするサーバーアプリ ケーションを立ち上げておいて、ホスト側のブラウザで http://localhost:9080と入力することでアクセスできるよう になります
  16. 16. $ sudo -s $ echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list $ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ apt-get update $ apt-get install apparmor lxc-docker Ubuntu上でターミナルで作業 docker実行時に、sudoしなくて良いように自分をdockerグループに入れる $ usermod -a -G docker shanai ここは自分のユーザー名 動作確認 $ docker --version Docker version 1.5.0, build a8a31ef
  17. 17.  Dockerの上にIBMの拡張を行うもの。Python で書かれている  基本情報は以下のページ https://www.ng.bluemix.net/docs/#starters/ index-gentopic3.html#container_install  現在は以下のファイルでインストール(方法は 次ページ) https://static-ice.ng.bluemix.net/icecli- 2.0.zip
  18. 18.  pip (Python用のパッケージマネージャ)をイン ストール $ sudo apt-get install python-pip  IBM Container Extensionを導入(引数は前 ページでダウンロードしたファイル) $ sudo pip install icecli-2.0.zip
  19. 19.  カタログから、Containersを追加 (1) (2)
  20. 20. ここが自分用のprivate repogitoryなのでメモしておきま す。ここまで来たら一旦コマンドラインに戻ります
  21. 21.  LocalのDocker上でnginxを動かしてみます  今回は、こちらを利用させていただきました https://github.com/dockerfile/nginx $ docker build -t=dockerfile/nginx github.com/dockerfile/nginx $ docker run -d -p 9080:80 dockerfile/nginx コンテナ上では、port 80で動作するため、それを9080ポートに転送します。 VirtualBox内のUbuntuにsshで接続する際にport 9080を転送してあるので、ホスト 側でlocalhost:9080でアクセスできます(次ページ参照)
  22. 22. Mac or Windows VirtualBox Ubuntu Docker nginx port 80 port 9080 docker run –d –p 9080:80 sshd sshport 9080 ssh -L9080:localhost:9080 ブラウザなど http://localhost:9080 ややこしいですが、こん な感じです
  23. 23.  ブラウザで確認
  24. 24.  次にBluemixで確認します。まずiceコマンド でログイン $ ice login API endpoint: https://api.ng.bluemix.net Email> shanai@jp.ibm.com Password> Authenticating... OK Targeted org shanai@jp.ibm.com Select a space (or press enter to skip): 1. dev 2. test-space Space> Bluemixのユーザ、パスワード enter空打ち
  25. 25.  privateレポジトリ用にビルド $ docker build –t registry-ice.ng.bluemix.net/ruimo/nginx github.com/dockerfile/nginx メモしておいたprivateレポジト リのURL  イメージのupload $ docker push registry-ice.ng.bluemix.net/ruimo/nginx Bluemixの混雑具合により非常に時 間がかかることがあります
  26. 26.  イメージのuploadが終わったら、Bluemixに 戻ってブラウザをリロードしてみます 自分がuploadしたイメー ジが表示される
  27. 27. public ipの割り当てを要求 port 80を公開 適当に名前付ける NEXTをクリック
  28. 28. 変更無しでDEPLOY
  29. 29. 起動したらブラウザで、このIPを開く
  30. 30. localの時と同じページが表示された
  31. 31.  Dockerを用いることで、localで作成した環境 をそのままCloudで動作させることができる  BluemixでDockerを用いる場合、  Dockerを予めインストールした上にIBM Container Extension(iceコマンド)をインストール する必要がある  Bluemix用のprivateレポジトリにDockerイメージ をpushしてから実行する必要がある
  32. 32.  ボリューム機能を用いた永続化層の利用  sshを使ったコンテナへのログイン

×