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.

8a1#19[はじめてのdocker] 公開版

3,959 views

Published on

8a1 Docker
#17 -> #19 のものに差し替えました。内容に大差なし。

Published in: Internet
  • Be the first to comment

8a1#19[はじめてのdocker] 公開版

  1. 1. April 24 , 2015 AP Communications Co., Ltd. System Infrastructure Engineering Div. Nobuchika Kamon 1
  2. 2. Question. 1. どちらかというとプログラマ的な仕事である。 2. どちらかというとサーバエンジニア的な仕事である。 3. あるいはネットワークエンジニアかデザイナなどの仕事である。 2
  3. 3. 1. Dockerは普通に触ったことがある。 2. Dockerは触ったことがあんまりない。(ちょっとある) 3. 全くない。 Question. 3
  4. 4. 1. いままで8a1に参加したことある。 2. 無い。 Question. 4
  5. 5. ご協力ありがとうございました。 進行の参考にさせていただきます。 Question. 5
  6. 6. 今回の講座は、タイトルどおりに初心者向けです。 中上級者の方がいらっしゃった場合、つまらないという可能性が 大いにありますのでその点はご了承くださいませ。 資料は後日Slideshareにアップ予定。 質疑応答は懇親会の時にでもざっくばらんに声かけてください。 4649 !! Question. 6
  7. 7. Who? 嘉門 延親(KAMON Nobuchika) ・ 独立系SIer歴 13年くらい(その前にも数社) ・ 基本的にインフラ屋として働いてます。 ・ Googleストリートビュー被写体経験あり 7
  8. 8. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 8
  9. 9. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 9
  10. 10. What is Docker ? Dockerの概要 10
  11. 11. What is Docker ? 元々は、dotCloudという会社(クラウドサービス)が、自社のPaaS環境を 実現する為につくったツールでした。 しかし今は、dotCloudは売却して、Docker,Inc になりました。 「Docker」 Linux上で動作するコンテナ型の仮想化ソフトウェア 11 ここは本日限り
  12. 12. What is Docker ? ・AWS、Dockerコンテナ管理サービス「Amazon EC2 Container Service」などをリリース 2014/11/16 ・正式版「Docker 1.0」がリリース――Microsoft AzureもDocker利用を支援 2014/6/9 ・ Docker 向けCloud Foundry BOSHがリリース 2014/6/11 ・ Red HatがDocker中心のEnterprise LinuxディストリビューションAtomic Hostをリリース 2015/3/6 などなど・・・ ※現在の最新版は1.6です。 2014年に1.0がリリースし、大きく知名度向上&大ブレイク。 12
  13. 13. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security このあたりの説明は後ほど。 基本的な機能はLinuxが元々持ってる機能を利用してます。 13
  14. 14. What is Docker ? Virtual Machines Vs D o c k e r 14
  15. 15. What is Docker ? Server HOST OS Hypervisor GuestOS GuestOS Bins/Libs App A Bins/Libs App B Virtual Machines それぞれのアプリを動かすための 実行環境として、わざわざ別の ゲストOSを用意。 15
  16. 16. What is Docker ? Server HOST OS Hypervisor GuestOS GuestOS Bins/Libs App A Bins/Libs App B Virtual Machines ゲストOSだけではなく、 HyperVisorという謎の物体もある 16
  17. 17. What is Docker ? Server HOST OS Docker Engine Bins/Libs App A Bins/Libs App B Docker ゲストOSいらず。 いきなりコンテナとしてアプリ実 行環境をポコポコ作れる。 ハイパーバイザーもいらない。 17
  18. 18. What is Docker ? VirtualMachine vs Docker Virtual Machine Docker 起動 数分は必要 1秒くらい メモリ OS本体分の確保が必要 プロセスの分だけ OSの自由度 OSそのものなので自由にできる 母艦ホストに依存 ディスク容量 OS分は必要 コンテナで使う分だけ 18
  19. 19. What is Docker ? 身近な例に例えると…. 19
  20. 20. What is Docker ? ひとつの土地にひとつのOSが入っている。一軒家構成。 = 従来の物理構成 Traditional Architecture 20
  21. 21. What is Docker ? それぞれの部屋に風呂とかキッチンは必要だけど、 敷地はひとつの “マンション” で良くね? = 仮想化環境 Virtual Architecture 21
  22. 22. What is Docker ? つーか、玄関も風呂もキッチンも全部ひとつで良いよね。 要は最低限の自分の環境があればいいわ。 ファシリティ共通の ”シェアハウス” でいいよね。 = Docker 環境 22
  23. 23. What is Docker ? 自由度: 一軒家 > マンション > シェアハウス コストの高さ: 一軒家 > マンション > シェアハウス 引っ越しの大変さ: 一軒家 > マンション > シェアハウス 23
  24. 24. What is Docker ? 何がベストかは用途次第ではありますが、 軽くて独立したアプリ実行環境を作れるという のがDockerの強みです。 24
  25. 25. What is Docker ? またDockerfileによる “Infrastructure as a code” の実現や、 ポータビリティの高さもその強みです。 25
  26. 26. What is Docker ? Dockerfileの例 FROM centos:centos6 MAINTAINER KAMONNOBUCHIKA@APC RUN yum update -y RUN yum install -y mysql-server RUN yum install -y mysql-devel RUN chown -R mysql:mysql /var/lib/mysql EXPOSE 3306 CMD ["/usr/bin/mysqld_safe"] # vi Dockerfile CentOS6のイメージ上に、 Yum updateして、 Mysql-serverとdevelいれて ディレクトリ権限変えて 3306あけて 起動するっていうように書いておく 26
  27. 27. What is Docker ? Dockerfileの例 # docker build -t kamon/mysql:0.1 . Buildオプションで、イメージを作る。 ―t でイメージ名 kamon/mysql、タグ名を0.1とする。 んで、カレントディレクトリにあるDockerfileを指定。 27
  28. 28. What is Docker ? 要するに、書いておくとその通りに再現される イメージのレシピ的なものを持っておけますよと。 そんな話です。 28
  29. 29. What is Docker ? なおイメージ自体もExportして、 他の環境に持ってくことができます。 DockerイメージはVMを移動するより はるかに軽量ですが、 データ以外はファイルにして都度実行の 方が当然軽いです。でも時間はかかるけど。 29
  30. 30. What is Docker ? アーキテクチャについての説明 30
  31. 31. What is Docker ? これからご説明するものは、 Linux自体に実装されている機能です。 個々の詳細は割愛しますが、 ふーんこういうふうなもんなのねくらいに 見ていただければと思います。 31
  32. 32. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security 32
  33. 33. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security 33
  34. 34. What is Docker ? Server HOST OS Docker Engine Bins/Libs App A Bins/Libs App B Namespaces -プロセスの隔離- × それぞれのコンテナ間は隔離されている。 34
  35. 35. What is Docker ? Namespaces -プロセスの隔離- それぞれの超概要: ○ PID → それぞれのコンテナで独立したPID ○ MNT → 各空間で行ったマウント操作が他に影響しない ○ IPC → プロセス間通信(IPC)を独立させることができる ○ UTS → ホスト名、ドメイン名をそれぞれ持つことができる ○ NET → IPアドレス、ルーティングテーブルとかを独立 ○ USER → いまのDockerでは使えない まぁ、あんまり意識しないですけど、実際。 35
  36. 36. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security 36
  37. 37. What is Docker ? 例えば、 CPUやメモリの使用量を制限することができます。 docker run -c 256 -m 512m hoge /bin/bash -c :CPUの相対的な資料量 -m : Memory使用上限 37
  38. 38. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security 38
  39. 39. What is Docker ? UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs) https://docs.docker.com/terms/layer/ 39
  40. 40. What is Docker ? UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs) Write https://docs.docker.com/terms/layer/ 40
  41. 41. What is Docker ? UNION Filesystem. (aufs,btrfs,devicemapper,vfs,overlayfs) Read https://docs.docker.com/terms/layer/ 41
  42. 42. What is Docker ? ○ Namespaces ○ cgroups ○ Storage ○ Networking ○ Security 42
  43. 43. What is Docker ? 仮想ブリッジ iptables SElinux Veth など などが使われてます(詳細はハンズオンにて) まぁこんなんがありますよ、と。 43
  44. 44. What is Docker ? ウンチクが長くてすいません。 44 自主規制
  45. 45. What is Docker ? も・・・もう少しだけ。。 45
  46. 46. What is Docker ? docker hub 46
  47. 47. What is Docker ? ざっくりいうと、インストールして使うソフトウェア としてのDockerは “Docker Engine”。 それとは別にイメージを共有するためのレポジ トリとして “Docker hub” があります。 47
  48. 48. What is Docker ? docker hub (official Repo) ※ March 7, 2015 48
  49. 49. What is Docker ? docker hub (Price) ※ March 7 , 2015 49
  50. 50. What is Docker ? ここまでのまとめ。 ○ Dockerの良いところ -- VM技術との比較とDockerfile など ○ 使われてる要素技術 -- コンテナ隔離、リソース、FS など ○ Docker hubについて 50
  51. 51. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 51
  52. 52. Orchestration. Dockerの課題 Server HOST OS Docker Engine Bins/Libs App A ひとつのサーバにひとつのコンテナ。 特に問題ない。 52
  53. 53. Orchestration. Dockerの課題 Server HOST OS Docker Engine Bins/Libs App A ひとつのコンテナに複数のアプリケーション。 これは基本的にイケてない。 # Docker非推奨。 ひとつのアプリケーションを動かすべき。 App B 53
  54. 54. Orchestration. Dockerの課題 Server HOST OS Docker Engine Bins/Libs App A Bins/Libs App B まぁ、こうなる。 54
  55. 55. Orchestration. Dockerの課題 Server HOST OS Docker Engine Bins/Libs PHP Bins/Libs MySQL APサーバとDBサーバならこんな感じ。 単一サーバの中であれば、linkの機能と して実現することができる。 55
  56. 56. Orchestration. Dockerの課題 ○ 複数ホストをまたがって管理するときには? ○ 単一サーバでもコンテナ多くなったらカオスじゃね? ○ Dockerのホスト自体を管理する手段ってねーの? ○ ホスト間のシームレスなマイグレーションってどーすんの? などなど。 このあたりが、現時点でのDockerの課題のひとつです。 現時点で決定的なツール等はありませんが、徐々に充実してきています。 今回はいくつかそれらをご紹介します。 56
  57. 57. Orchestration. fig ------------------------------------------------------------------- 【 fig.yml 】 web: image: kamon/apache:0.1 links: - db ports: - "80:80“ db: image: kamon/mysql:0.1 volumes: - /var/lib/mysql:/var/lib/mysql ------------------------------------------------------------------- fig up –d : fig.yml に書いた通りにイメージをアップしてくれる。 単一ホストの簡易的な管理 57
  58. 58. Replication Controller Orchestration. kubernetes Google謹製 複数ホストに対する高機能Docker管理ツール。 k8s とか略されたりしている。 Docker、MS、Redhat 他各社が支持を表明している。 基本的にはマルチホストNWを実現する flannelと一緒に使う。 Container Container Label Replication Controller Container Container Label Container Pod (Labelはpodの名前) service 設定したpodにtrafficをRRで割り振ったりする 指定した数だけpodを立ち上げたりする 58
  59. 59. Orchestration. Docker Machine (Bata) AWS EC2、OpenStack、VMware vSphere、 MS Azure、DegitalOcianなど 様々な環境に一発でホスト環境を作って管理。 Docker Swarm (Bata) 複数のDocker Engineをひとつに束ねたように 見せるクラスタリングツール。 Docker Compose複数のDockerコンテナで構成されるアプリケーション をデプロイするオーケストレーションツール。 つーかfigである。 59
  60. 60. Orchestration. 60 https://github.com/weaveworks/weave Weave ホストにdockerイメージを落として、 コンテナとして起動するとマルチホスト間のネットワーク をトンネル作って作ってくれるツール。 (超シンプル)
  61. 61. Orchestration. Dockerの課題 徐々にプレイヤーが出そろってきた感じがありますが、まだβだったりして バギーだったり機能不足だったりしています。個人的にはweave推し。 一方でコミュニティも活発だし、おそらく今年中には大きく進展するかも? また柔軟なマルチホスト間NWも実現できるSocketPlaneという ソリューションをDockerが買収したりもしております。 これからも要注目! 61
  62. 62. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 62
  63. 63. Case. 東南アジア某国 日系企業さま 社内システム作ってくれYO 63
  64. 64. Case. 東南アジア某国 日系企業さま 分かったYO 64
  65. 65. Case. 東南アジア某国 日系企業さま ただしウチのVM上に作ってYO 開発環境はAPCだ YO 65
  66. 66. Case. 東南アジア某国 日系企業さま (二度も環境構築とか 差異とかめんどくせーな・・・) 66
  67. 67. Case. 東南アジア某国 日系企業さま (VMイメージもってくのも・・) 67
  68. 68. Case. 東南アジア某国 日系企業さま (東南アジアだし 回線 遅いしなぁ。。) 68
  69. 69. Case. 東南アジア某国 日系企業さま !!!!! 69
  70. 70. Case. 東南アジア某国 日系企業さま お客さん、 いま世界はDockerです! コンテナもってきますYO! 70
  71. 71. Case. 東南アジア某国 日系企業さま わかったYO 71
  72. 72. Case. 非常にざっくりいうと、そんな経緯でお客様のご理解を得て 受託してるSIerの我々はDockerで環境を作ることになりました。 72
  73. 73. Case. コンテナとアプリを転 送して乗せるだけ ここは本日限り 73 ここは本日限り
  74. 74. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ ★Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 74
  75. 75. Agenda. しかし、当ビル内ではタバコ吸えません・・・。 ごめんなさい・・・。 75
  76. 76. ------------------< 薀 蓄 >------------------ 1. Dockerってどんな技術?という概要 2. Dockerのオーケストレーションツールの紹介 3. 本番環境での実装例のご紹介 ------------------< 休 憩 >------------------ ※ないかも?EC2のアカウント情報を配ります。 ------------------< 手 技 >------------------ ★Dockerしてみるハンズオン イメージ的にはだいたいトータルで1H~1.5Hくらいの予定です。 質疑は懇親会でやりましょー。適当に声かけてください。 Agenda. 76
  77. 77. Hands on. 手順1: お配りしたURLにアクセスして、鍵ファイル(pem)をDLしてください。 手順2: 何らかのターミナルでSSHにて、指定されたIPアドレスに入ってください。 それぞれ個別のEC2インスタンスを作っています。 手順3: ユーザ名は root パスワードは 無しです。 ※docker自体をインストール済みのCentOS6を用意しました。 77
  78. 78. Hands on. 基本操作を通じて、理解を深めるの巻 78
  79. 79. Hands on. 【レッスン1】 dockerのイメージを入手、そして確認。 # docker pull centos:centos6 centos:centos6: The image you are pulling has been verified 511136ea3c5a: Pull complete 5b12ef8fd570: Pull complete f6808a3e4d9e: Pull complete Status: Downloaded newer image for centos:centos6 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos6 b9aeeaeb5e17 32 hours ago 202.6 MB centos 6 b9aeeaeb5e17 32 hours ago 202.6 MB 79 イメージ名
  80. 80. https://docs.docker.com/terms/layer/ Hands on. ここを落とし てきました。 80
  81. 81. Hands on. 【レッスン2】 dockerの起動。 # docker run -it centos:centos6 /bin/bash [root@6b484935c662 /]# [root@6b484935c662 /]# [root@6b484935c662 /]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 11692 1876 ? Ss 10:26 0:00 /bin/bash root 22 0.0 0.0 19696 1240 ? R+ 10:36 0:00 ps -aux コンテナを立ち上げて、Dockerの中に入りました。 一瞬!かつめっちゃ早いですよね。隔離されてるので、何もプロセスが無いです。 イメージ名 実行プロセス標準出力+TTY 81
  82. 82. Hands on. 【レッスン3】 dockerプロセスの確認。 別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。 一意なID イメージ名 実行CMD 作られた時 ステータス 指定しないと 適当な名前 コンテナがひとつ立ち上がっているのが確認できます。 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a30e66a89b centos:centos6 "/bin/bash" 15 seconds ago Up 14 seconds suspicious_mcclintock 82
  83. 83. 【レッスン4】 コンテナから出て確認します。 Hands on. [root@6b484935c662 /]# exit exit [root@ip-172-31-8-137 ~]# /bin/bashというアプリを立ち上げるプロセスに入っていたので、 そこからexitする=コンテナ終了となります。 コンテナから出ます EC2インスタンス(ホストOS)に 戻ります # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES コンテナは消えています。 83
  84. 84. Hands on. 【レッスン5】 落ちたコンテナを確認→立ち上げてみます。 再度、動かすことができました。 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a30e66a89b centos:centos6 "/bin/bash" About a minute ago Exited (0) 4 seconds ago suspicious_mcclintock # docker start bdebb1137587 b5a30e66a89b # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a30e66a89b centos:centos6 "/bin/bash" 3 minutes ago Up 10 seconds suspicious_mcclintock Exitして終了している 叩き起こしてみる 生き返る! コンテナID 84
  85. 85. Hands on. 【レッスン6】 もう一回、コンテナに入ってみます。 # docker exec -it bdebb1137587 /bin/bash [root@6b484935c662 /]# [root@6b484935c662 /]# [root@6b484935c662 /]# もう一回はいります。 /bin/bashの出力をとるかんじ。 [root@6b484935c662 /]# yum install –y telnet YUMでtelnetをインストール。 コンテナID 85
  86. 86. 別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。 Hands on. 【レッスン7】 コミットしてイメージを保存します。 # docker commit bdebb1137587 yourname/test1:0.1 50c427451ecc9d4750b3d658d791ecf51cf503a4188c981bf477a17528a8a74a # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hoge/test1 0.1 50c427451ecc 28 seconds ago 342.6 MB centos latest 88f9454e60dd 2 days ago 223.9 MB 新しくイメージが出来ました! コンテナID 名前+タグ 86
  87. 87. https://docs.docker.com/terms/layer/ Hands on. Baseの上に もう一層を重 ねました。 87
  88. 88. Hands on. 【レッスン8】 イメージを捨ててみます。 # docker rmi f8922a2b3a97 Untagged: hoge/test1:0.1 Deleted: 50c427451ecc9d4750b3d658d791ecf51cf503a4188c981bf477a17528a8a74a # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos6 f6808a3e4d9e 6 days ago 215.7 MB 消えました! イメージID 88
  89. 89. Hands on. 【レッスン9】 ホストのIPアドレスとかを確認してみます。 # ip a 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> -snip- state UNKNOWN link/ether a6:14:e2:10:30:01 brd ff:ff:ff:ff:ff:ff inet 172.17.42.1/16 scope global docker0 inet6 fe80::ec3b:bdff:fea7:8629/64 scope link valid_lft forever preferred_lft forever 9: vethf5d9822: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP link/ether a6:14:e2:10:30:01 brd ff:ff:ff:ff:ff:ff inet6 fe80::a414:e2ff:fe10:3001/64 scope link valid_lft forever preferred_lft forever docker0 というインターフェイスがあります。 veth xxx というインターフェイスがあります。 docker0 と veth は同じmacアドレスになっています。 89
  90. 90. Hands on. 【レッスン10】 ホスト側のネットワーク情報とかを確認してみます。 # brctl show bridge name bridge id STP enabled interfaces docker0 8000.a614e2103001 no vethf5d9822 個別のNWが作られ、iptablesの機能で通信していることが分かります。 # iptables-save | grep docker0 -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT 仮想ブリッジに紐づいているのは 先ほどのveth=docker0です。 docker0に対しての許可ルールです。 90
  91. 91. Hands on. 【レッスン11】 コンテナのIPアドレスとかを確認してみます。 # docker exec -it bdebb1137587 /bin/bash [root@6b484935c662 /]# ip a 8: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff inet 172.17.0.3/16 scope global eth0 inet6 fe80::42:acff:fe11:3/64 scope link valid_lft forever preferred_lft forever [root@6b484935c662 /]# ping 172.17.42.1 PING 172.17.42.1 (172.17.42.1) 56(84) bytes of data. 64 bytes from 172.17.42.1: icmp_seq=1 ttl=64 time=8.37 ms eth0が出来ています。 そこにホスト側のdocker0と同セグメントの IPアドレスが振られています。 同セグメントのdocker0にpingが飛びます。 91
  92. 92. # docker ps Hands on. 【レッスン12】 不要なコンテナを削除します。 [root@79dfde92ce89 /]# exit exit CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a30e66a89b centos:centos6 "/bin/bash" 6 minutes ago Up 3 minutes suspicious_mcclintock # docker rm bdebb1137587 # docker ps -a イメージが残っていないことを確認します。 92 # docker stop bdebb1137587 # docker ps -a 指定したコンテナを消します。
  93. 93. # docker ps Hands on. 【レッスン13】 docker inspectオプションを実行(準備)。 # docker run -it centos:centos6 /bin/bash 93 時間次第で実施 別ターミナルを上げてSSHで入って、以下のコマンドを打ってください。 その際、ログインしているコンテナから出ないこと。 コンテナの起動を確認
  94. 94. Hands on. 【レッスン14】 docker inspectオプションを実行。 # docker inspect bdebb1137587 # docker inspect --format="{{.NetworkSettings.IPAddress}}" bdebb1137587 個別のフィールドだけを抜き出すことも可能です。 作成時間、実行コマンド、IPアドレス、環境変数、イメージ、などなど・・・。 94 時間次第で実施 コンテナID コンテナID
  95. 95. Hands on. 【レッスン15】 docker APIを叩いてみる。 # vi /etc/sysconfig/docker 編集前:other_args=“--dns=8.8.8.8” 編集後:other_args=“--dns=8.8.8.8 -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock" # service docker restart # curl http://127.0.0.1:4243/images/json | python -mjson.tool 保有しているイメージがJSONで返ってきます。 95 時間次第で実施 ※ 最初はAPIは空いてないので、実際は事前に以下のようなファイル編集が必要
  96. 96. Hands on. DockerFileを作って立ち上げてみるの巻 96
  97. 97. Hands on. 【レッスン16】 Dockerfileでイメージ化します。 (時間があれば) # wget http://52.68.166.69 /Dockerfile ファイルを任意のディレクトリにおいてください。 # docker build -t yourname/apache:0.1 . イメージ名 タグ カレントディレクトリ # docker images 作成したイメージがあることを確認してください。 97 時間次第で実施
  98. 98. Hands on. 【レッスン17】 Dockerfileで作ったイメージを立ち上げてみます。 # docker run -d -p 80:80 yourname/apache:0.1 98 イメージ名 タグデタッチ ホスト側のポート80を、コンテナの80に転送 # http://<IPADDR> に対して、ブラウザアクセスをしてみましょう 時間次第で実施
  99. 99. Fin 他にも紹介しきれてない色々なコマンド等がありますが、 https://docs.docker.com/reference/commandline/cli/ 公式のリファレンスが丁寧なので見てみると分かりやすいです。 あと –-help を使うと、その次を教えてくれたりもします。 例) docker run –-help など 色々とトライしてみてください! 99
  100. 100. Fin コンテナ技術はシステム全体のオーケストレーションという 課題は残りつつも、実用化に向けて注目の分野です。 他にもrktやLXDという新しい風の予感もありますが、 当面はDockerがその最前線にいるだろうと思われます。 100 https://coreos.com/blog/rocket/
  101. 101. Fin ご質問は懇親会でざっくばらんに聞いてみてください。 私がビールで酔っぱらう前が良いと思います。 101
  102. 102. Fin 最後に、ささやかなCM。 102
  103. 103. Fin ご清聴、ありがとうございました。 104

×