Dockerをすこーしさわってみる

2,319 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,319
On SlideShare
0
From Embeds
0
Number of Embeds
922
Actions
Shares
0
Downloads
12
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Dockerをすこーしさわってみる

  1. 1. Copyright © 2014 rocros All Rights Reserved. Dockerをすこーし さわってみる Rocros Casual Talk #7 2014.05.13 Yuta Ohashi
  2. 2. 2Copyright © 2014 rocros All Rights Reserved. ゴール ローカルPCでVagrantでホストOSを起動して、 ホストOSのDockerでコンテナを起動する。 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu コンテナ2 Docker image username/centos インターネット
  3. 3. 3Copyright © 2014 rocros All Rights Reserved. はじめる前に・・・ 開いておいてください https://gist.github.com/blue-goheimochi/5129e21e09c2fdc224ce
  4. 4. 4Copyright © 2014 rocros All Rights Reserved. ローカルPCにVagrantをインストール ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【Before】Vagrantインストール前
  5. 5. 5Copyright © 2014 rocros All Rights Reserved. ローカルPCにVagrantをインストール Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【After】Vagrantインストール後
  6. 6. 6Copyright © 2014 rocros All Rights Reserved. ローカルPCにVagrantをインストール 公式サイトからOSにあったVagrantをインストールする http://www.vagrantup.com/downloads.html
  7. 7. 7Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【Before】ホストOS起動前
  8. 8. 8Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 ホストOS Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【After】ホストOS起動後
  9. 9. 9Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 Macの場合 ● ターミナルを起動する。 ● 下記を入力して「Enter」 Windowsの場合 ● 「windows」ボタン+「R」ボタン ● ファイル名を指定して実行に「cmd」と入力して「OK」をクリック ● 下記を入力して「Enter」 vagrant box add centos64 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box vagrant box add centos64 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
  10. 10. 10Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 Macの場合 ● ホームディレクトリに適当なディレクトリを作る(ホームディレクトリじゃなくてもお好きな場所に) Windowsの場合 ● デスクトップに適当なフォルダを作る(デスクトップじゃなくてもお好きな場所に) ● 下記コマンドで、作成したフォルダに移動する cd Desktop¥docker-test mkdir /Users/ユーザー名/docker-test ● 作成したディレクトリに移動する cd /Users/ユーザー名/docker-test
  11. 11. 11Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 Macの場合 ● 作成したディレクトリに、下記「Vagrantfile」を配置する https://gist.github.com/blue-goheimochi/1520db0f069fd8ec4b8a Windowsの場合 ● 作成したフォルダに、下記「Vagrantfile」を配置する https://gist.github.com/blue-goheimochi/1520db0f069fd8ec4b8a ※gitがインストールされている環境であれば、git cloneのほうが簡単かもです。 git clone https://gist.github.com/1520db0f069fd8ec4b8a.git .
  12. 12. 12Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 Macの場合 ● 下記コマンドを実行してホストOSを起動する Windowsの場合 ● 下記コマンドを実行してホストOSを起動する vagrant up ssh 192.168.33.22 ●ユーザ名: vagrant パスワード: vagrant でログインする ● PuttyなどのSSHクライアントで、192.168.33.22(ポート:22)を指定し、ホストOSにアクセスする。 ● ユーザ名: vagrant パスワード: vagrant でログインする vagrant up ● sshコマンドでホストOSにアクセスする
  13. 13. 13Copyright © 2014 rocros All Rights Reserved. Dockerをインストール ホストOS Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【Before】Dockerインストール前
  14. 14. 14Copyright © 2014 rocros All Rights Reserved. Dockerをインストール ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【After】Dockerインストール後
  15. 15. 15Copyright © 2014 rocros All Rights Reserved. Dockerをインストール Dockerをインストールする sudo yum -y install docker-io sudo service docker start sudo chkconfig docker on ※DockerをEPELリポジトリからインストールする。素のCentOSであれば、手動でEPELリポジトリの追加をする必要が ある。今回使用するVagrantBoxではすでにEPELリポジトリが追加されている。 Dockerのバージョンを確認する sudo docker version ※インストールされるDockerのバージョンは0.9.0。「Last stable version: 0.11.1, please update docker」のメッセージ が表示されるが、現状(2014.05.12現在)EPELリポジトリで提供されるバージョンは0.9.0になります。(ちなみにUbuntu Trustyでも0.9.1) ※各OS別のインストール方法は、 https://www.docker.io/gettingstarted/#h_installation こちらから確認できます。
  16. 16. 16Copyright © 2014 rocros All Rights Reserved. Dockerをインストール Dockerの状態を確認する sudo docker info コンテナ数、イメージ数などのDockerの現在の情報が確認できます。
  17. 17. 17Copyright © 2014 rocros All Rights Reserved. Docker Imageを取得 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット 【Before】Docker Image取得前
  18. 18. 18Copyright © 2014 rocros All Rights Reserved. Docker Imageを取得 【After】Docker Image取得後 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index centos centos fedra ubuntu インターネット
  19. 19. 19Copyright © 2014 rocros All Rights Reserved. Docker Imageを取得 Docker Imageを取得する sudo docker pull centos Docker IndexからDocker Imageを取得します。今回は公式のcentosのDocker Imageを取得。 (https://index.docker.io/_/centos/) Docker Imageはpull時に、下記URLのDocker Indexの中のDocker Imageから検索されます。 https://index.docker.io/ こちらから様々なDocker Imageを検索できます。 pull したDocker Imageを確認する sudo docker images TAG名の違う3つのイメージファイルが表示されると思います。(TAG:centos6、latest、6.4) リポジトリ内の特定のイメージのみpullしたい場合には、 sudo docker pull centos:latest のようにリポジトリ名の後ろに「:」でTAG名を指定することで可能です。
  20. 20. 20Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 【Before】コンテナ1起動前 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index centos centos fedra ubuntu インターネット
  21. 21. 21Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu インターネット 【After】コンテナ1起動後
  22. 22. 22Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 centosのDocker Imageを元にcontainer1という コンテナを起動しシェルを実行する sudo docker run -i -t -h container1 centos /bin/bash インタラクティブモードで実行する場合 –i と –t のオプション指定が必要となります。-h でホスト名が指定できます。 コンテナの確認をする env Container1のホスト名でコンテナが起動していることが確認できます。 コンテナを終了する exit
  23. 23. 23Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 起動中のコンテナを確認する sudo docker ps すべてのコンテナの状態を確認 sudo docker ps -a コンテナを再実行する sudo docker start <CONTAINER ID> 起動しているコンテナを確認するコマンドですが、この時点で起動しているコンテナは存在しないはず。 -a のオプションをつけることで全てのコンテナを確認できます。 コンテナの起動時にランダムな CONTAINER ID が設定されます。
  24. 24. 24Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 起動中のコンテナを確認する sudo docker ps コンテナにアタッチしてコンテナ内に入る sudo docker attach <CONTAINER ID> Apacheをインストールする yum –y install httpd service httpd start 先ほど再実行した CONTAINER ID のコンテナが起動していることが確認できます。 再度シェルが実行できるようになります。 コンテナを終了する exit
  25. 25. 25Copyright © 2014 rocros All Rights Reserved. コンテナ1からDocker Imageを作成する ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu インターネット 【Before】Docker Image作成前
  26. 26. 26Copyright © 2014 rocros All Rights Reserved. コンテナ1からDocker Imageを作成する ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu Docker image username/centos インターネット 【Before】Docker Image作成後
  27. 27. 27Copyright © 2014 rocros All Rights Reserved. コンテナ1からDocker Imageを作成する コンテナ1からDocker Imageを作成する sudo docker commit <CONTAINER ID> username/centos 作成したDocker Imageを確認する sudo docker images これで先ほどApacheをインストールしたコンテナ1がDocker Imageとして保存されます。 username/centos の名前でDocker Imageが作成されていることが分かります。
  28. 28. 28Copyright © 2014 rocros All Rights Reserved. 作成したDocker Imageからコンテナ2を起動 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu Docker image username/centos インターネット 【After】コンテナ2起動前
  29. 29. 29Copyright © 2014 rocros All Rights Reserved. 作成したDocker Imageからコンテナ2を起動 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu コンテナ2 Docker image username/centos インターネット 【After】コンテナ2起動後
  30. 30. 30Copyright © 2014 rocros All Rights Reserved. 作成したDocker Imageからコンテナ2を起動 バックグラウンドでコンテナ2を起動 sudo docker run -d -p 80:80 -h container2 username/centos /usr/sbin/httpd -D FOREGROUND 起動中のコンテナを確認する sudo docker ps 先ほどとは別のオプションを指定して起動します。 -p はポートフォワーディングのオプションです。<ホストポート>:<コンテナポート>で指定できます。 -d はコンテナがバックグラウンドで動くようにするオプションです。 バックグラウンドでコンテナを動かす場合、何かジョブがフォアグラウンドで動いていないといけないようなので、 httpdがフォアグラウンドで動くようコマンドを指定しています。 コンテナ2が起動している状態が確認できます。 PORTSの部分が「0.0.0.0:80->80/tcp」になっているかと思いますがこれは、 ホストのポート:80 → コンテナ2のポート:80にポートフォワードしていることを示します。
  31. 31. 31Copyright © 2014 rocros All Rights Reserved. 作成したDocker Imageからコンテナ2を起動 ブラウザで確認する ブラウザのアドレスバーに「http://192.168.33.22/」を入力すると、Apatcheのテストページが表示されます。
  32. 32. 32Copyright © 2014 rocros All Rights Reserved. ゴール達成!! ローカルPCでVagrantでホストOSを起動して、 ホストOSのDockerでコンテナを起動する。 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu コンテナ2 Docker image username/centos インターネット (+コンテナにApacheインストールしてブラウザでアクセスする)
  33. 33. 33Copyright © 2014 rocros All Rights Reserved. おさらい
  34. 34. 34Copyright © 2014 rocros All Rights Reserved. まっさらな状態 ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット
  35. 35. 35Copyright © 2014 rocros All Rights Reserved. ローカルPCにVagrantをインストール Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット
  36. 36. 36Copyright © 2014 rocros All Rights Reserved. ホストOSを起動 ホストOS Vagrant ローカルPC Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット vagrant up
  37. 37. 37Copyright © 2014 rocros All Rights Reserved. Dockerをインストール ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker Index centos fedra ubuntu インターネット yum -y install docker-io
  38. 38. 38Copyright © 2014 rocros All Rights Reserved. Docker Imageを取得 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index centos centos fedra ubuntu インターネット sudo docker pull centos
  39. 39. 39Copyright © 2014 rocros All Rights Reserved. コンテナ1を起動 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu インターネット sudo docker run -i -t -h container1 centos /bin/bash
  40. 40. 40Copyright © 2014 rocros All Rights Reserved. コンテナ1からDocker Imageを作成する ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu Docker image username/centos インターネット sudo docker commit <CONTAINER ID> username/centos
  41. 41. 41Copyright © 2014 rocros All Rights Reserved. 作成したDocker Imageからコンテナ2を起動 ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu コンテナ2 Docker image username/centos インターネット sudo docker run -d -p 80:80 -h container2 username/centos /usr/sbin/httpd -D FOREGROUND
  42. 42. 42Copyright © 2014 rocros All Rights Reserved. ゴール ホストOS Vagrant ローカルPC Docker Docker image Docker image Docker image Docker image Docker Index コンテナ1 centos centos fedra ubuntu コンテナ2 Docker image username/centos インターネット ローカルPCでVagrantでホストOSを起動して、 ホストOSのDockerでコンテナを起動する。 (+コンテナにApacheインストールしてブラウザでアクセスする)
  43. 43. 43Copyright © 2014 rocros All Rights Reserved. その他コマンドの一部 Docker Imageを削除する sudo docker rmi <IMAGE ID> コンテナを削除する sudo docker rm <CONTAINER ID> ダウンロードもしくは自分で作成したDocker Imageを削除します。 コンテナをコンテナIDを指定して削除します。 起動中のコンテナを停止する sudo docker kill <CONTAINER ID> 起動中のコンテナをコンテナIDを指定して停止します。
  44. 44. 44Copyright © 2014 rocros All Rights Reserved. Dockerfileについて Dockerfileとは? # ベースとなるDocker Imageの指定 FROM centos # 作成者 MAINTAINER username # yumでhttpをインストール RUN yum -y install httpd # ポート開放の設定 EXPOSE 80 # docker run 時に実行するコマンドを指定 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] Docker Imageを作成するための定義がかかれたファイルで、 今回を例にすると、「コンテナにApacheをインストールして、そのコンテナをDocker Imageにする」の工程を、 コマンド1つで実行できる。 Dcokerfileの例
  45. 45. 45Copyright © 2014 rocros All Rights Reserved. Dockerfileについて DockerfileからDocker Imageをビルド -t のオプションで <REPOSITORY>:<TAG>を指定できます。 最後の . (ピリオド)の部分はDockerfileの存在するパスを指定しますので忘れずDockerfileのパスを指定してください。 sudo docker build -t username:centos . 作成したDocker Imageを起動 sudo docker run -d –p 80:80 username/centos Dockerfileで指定したCMDが起動時コマンドとして実行されるので、runコマンドの最後に指定する必要はありません。 ブラウザで確認する ブラウザのアドレスバーに「http://192.168.33.22/」を入力すると、Apatcheのテストページが表示されます。 というようにDockerfileにコンテナの構築手順を記述することができるので、インフラをコードで管理するというよう なことも実現可能だと思います。
  46. 46. 46Copyright © 2014 rocros All Rights Reserved. 参考サイト Docker公式ドキュメント http://docs.docker.io/ 今回紹介していないコマンドもありますので、ぜひ公式ドキュメントは見ておくのがよいと思います。 Docker入門~Immutable Infrastructureを実現する https://gihyo.jp/dp/ebook/2014/978-4-7741-6504-2 サイトではなく本ですが、おそらく日本語で最初のDocker本。詳しくコマンドや使い方、 Dockerfileについても書かれています。分量もほどほどで良いです。 Docker入門 (全11回) http://dotinstall.com/lessons/basic_docker 動画の解説付きで、ほぼほぼこのスライドと同じ内容を学べます。 5分でなんとなーく分かるDocker http://www.slideshare.net/ohashiyuta/5docker 私の作成したスライドですが、このスライドでさわってみる前に見てもらってもよかったかも。
  47. 47. 47Copyright © 2014 rocros All Rights Reserved. 最後に・・・ “Docker is still under heavy development! We don‘t recommend using it in production yet” Dockerの公式サイトにおいて、上記のように“まだプロダクション環境で使うのはお勧めしないよ”といっています。 本番環境における運用の最適解というのもまだなく皆さん試行錯誤されている様子。 “but we're getting closer with each release. Please see our blog post, Getting to Docker 1.0” 現在(2014.05.13) の最新バージョンは0.11ですが近く1.0になりそうなので、今後の動向に期待しましょう。

×