SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Docker勉強会2017
最新基礎・応用編
@長野県塩尻市
日時:2017年7月22日(土曜日)
会場:塩尻インキュベーションプラザ
Twitterハッシュタグ #shiojiri-oss
©2017 Shinichiro Ohhara
大原 慎一郎
ohhara@shiojiri.com
(有)トラストネットワークス
長野県塩尻市 塩尻インキュベーションプラザ108号室
自己紹介と協賛紹介
©2017 Shinichiro Ohhara
信州OSS推進協議会
https://www.facebook.com/ShinshuOSS/
信州オープンビジネスアライアンス
http://s-soba.or.jp/
株式会社 リモードデザイン
http://www.remode-d.jp
アジェンダ
• Docker最新基礎入門
• ハンズオン実習の準備
• Docker基本操作
• アプリケーションコンテナ
• データコンテナ
• オーケストレーション
• サービスコンテナ
©2017 Shinichiro Ohhara
前回までの資料
• SlideShareにて各スライド資料を公開
• 2014年9月に入門編を開催
Docker入門
http://www.slideshare.net/ShinichiroOhhara/docker-39456836
• 2016年11月に再入門を開催
Docker再入門
http://www.slideshare.net/ShinichiroOhhara/docker-2016-update
• 2017年1月に実践編を開催
Docker実践編
https://www.slideshare.net/ShinichiroOhhara/docker2017
©2017 Shinichiro Ohhara
仮想環境
(VM1)
Docker Engine
仮想マシン(VM)とコンテナ
ハードウェア
ホストOS
ハイパーバイザー
仮想マシン
ゲストOS
ハードウェア
ホストOS(Linux Kernel)
Bins/Libs
AP
コンテナ1
Bins/Libs
AP
仮想環境
(VM2)
仮想マシン
ゲストOS
Bins/Libs
AP
コンテナ2
Bins/Libs
AP
Docker最新基礎入門
• 前回から変わったこと・・・
• 3月16日に4年目の誕生日を迎えました。
• コミニュティ版(CE)とエンタープライズ版(EE)
に別れました。
• DockerCon 2017 オースティンで開催
• LinuxKit 発表
• moby Project 発表
• Docker 17.06 Community Edition リリース
©2017 Shinichiro Ohhara
https://blog.docker.com/2017/05/get-involved-moby-project-attending-upcoming-moby-
summits/?mkt_tok=eyJpIjoiTWpaallXSm1ZekUzWlRVMiIsInQiOiJUdUpYd0VXYzFvclwvR3BmVG9waGhqWXhIZ1pvSHBESlpoS0h2
ZG0xQm03QmcxZFZQc2NLdFphNjVIMG9BbmJzWUtDOGFBZWIyazNSY2ZcL0toRWREZ3ltdG13bk1lSllzYkVTeUxqVW9RTVk2dlJhe
DFCb0VzWjJDYnA3cUxLU2EyIn0%3D
ハンズオン実習の準備
• 各自がPCを操作して実習
• ローカル環境を各自で準備
• 配布した別紙にて詳細を説明(非公開)
A) 会場のWiFi接続設定
B) ローカルPCのSSHログイン設定(公開鍵作成)
C) 仮想サーバーへのログイン
D) 仮想サーバーへDocker CEインストール
E) Dockerの基本設定
©2017 Shinichiro Ohhara
Docker基本操作
• コンテナ操作コマンド
A) docker ps
B) docker start
C) docker rm
• イメージ操作コマンド
A) docker images
B) docker run
C) docker rmi
©2017 Shinichiro Ohhara
Docker基本操作
• Docker Hub操作コマンド
A) docker search
B) docker pull
©2017 Shinichiro Ohhara
Docker基本操作
• OSイメージコンテナを実行
A) Ubuntuの最新公式イメージのダウンロード
B) Ubuntuコンテナのbash実行
C) 実行後にコンテナ内へログイン状態に移行
D) ログアウトするとコンテナも終了
• サービスの終了がコンテナの停止
A) 例ではbashをexitした事でコンテナが停止
B) 常駐サービスの場合はバックグラウンド起動
©2017 Shinichiro Ohhara
Docker基本操作
• サービスコンテナのバックグラウンド実行
A) Webサーバー(Nginx)のサービスコンテナ実行
B) コンテナのバックグラウンド起動を確認
C) Webブラウザで表示
D) コンテナの停止と状態確認
E) コンテナの再実行と状態確認
©2017 Shinichiro Ohhara
アプリケーションコンテナ
• コンテナイメージの作成
A) 例題として簡単なPythonアプリ(friendlyhello)
B) コンテナ構成ファイルDockerfileの作成
C) 必要なパッケージリストファイル作成
D) Pythonプログラムファイル作成
E) Dockerコマンドでビルド実行してイメージ作成
docker build –t [リポジトリ名:タグ名][Dockerfileへのパス]
©2017 Shinichiro Ohhara
アプリケーションコンテナ
• 作成したイメージからコンテナを起動
A) イメージの確認
docker images
B) コンテナの状態を確認
docker ps –a
C) 作成したfriendlyhelloのイメージをコンテナ起動
D) Webブラウザで表示
©2017 Shinichiro Ohhara
アプリケーションコンテナ
• レジストリ
A) コンテナイメージを共有管理
B) 公式レジストリDocker Hub
https://hub.docker.com/
C) イメージはアップロードか自動作成(Dockerfile)
D) リポジトリは一般公開され誰でも利用可能
E) 非公開のプライベートリポジトリは1つまでは無料
©2017 Shinichiro Ohhara
アプリケーションコンテナ
• プライベートレジストリの作成
A) ローカル環境にプライベートレジストリ構築
B) レジストリイメージをダウンロード
C) レジストリイメージからコンテナサービス起動
D) 前項で作成したfriendlyhelloを使用
E) イメージのタグを修正
F) リポジトリとしてプライベートレジストリへ登録
G) ローカルキャッシュイメージを消しても再利用可
©2017 Shinichiro Ohhara
データコンテナ
• ホストOS側ファイルをコンテナで利用する
A) コンテナからホストOS側ファイルを利用
B) データ編集はホストOS側なので自由
C) docker run –v
D) ホストOS側のデータ参照ファイルをコンテナ側か
ら利用する実習
E) 書き換えを制限して利用する場合
©2017 Shinichiro Ohhara
コンテナ
データコンテナ
• ホストOS側を透過的に利用
ホストOS
ホストOS側ディレクトリ
コンテナ側ディレクトリ
©2017 Shinichiro Ohhara
データコンテナ
• 複数のコンテナで共有する
A) コンテナ間でデータを共有できる共有ボリューム
B) 1つ目のコンテナで共有ボリュームを設定
C) 2つ目のコンテナでは1つ目のコンテナを指定
D) docker run –-volumes-from
E) 書き換えを制限して利用する場合
F) ただし提供元側コンテナは制限されない
©2017 Shinichiro Ohhara
コンテナ1
データコンテナ
• コンテナの共有ボリュームを利用
共有ボリューム
コンテナ2
コンテナ3
©2017 Shinichiro Ohhara
データコンテナ
• データコンテナ
A) 共有ボリューム提供に特化したコンテナ
B) データ専用のコンテナで分離し可搬性が向上
C) アプリケーションは入れない動作させない
D) 保守用に必要最小限のコマンド
E) コンテナイメージbusybox
F) データコンテナを作成して別コンテナから参照
G) サービス実行していなくても利用できる
©2017 Shinichiro Ohhara
複数のサービス連携
コンテナ1
Bins/Libs
Services1
コンテナ1
Bins/Libs
Services1
Services2
複数のサービスを
含めたコンテナ
コンテナ2
Bins/Libs
Services2
単一のサービスのコンテナを
リンク連携した場合
複数のサービス連携
• 1つのサービスに1つのコンテナが基本
• アプリは複数のサービスで構成される。
フロントエンド:webサーバー
バックエンド:データベースサーバー
• コンテナ間をリンク連携
ホスト1
複数のサービス連携
コンテナ1
Bins/Libs
Services1
コンテナ2
Bins/Libs
Services2
複数のホストに複数のコンテナを連携する場合
ホスト2
コンテナ3
Bins/Libs
Services3
コンテナ4
Bins/Libs
Services4
オーケストレーション
• Dockerコンテナ自体には無い
スケジュールやリソースの管理や複数のコンテ
ナを管理する機能
©2017 Shinichiro Ohhara
オーケストレーション
• パブリッククラウドの例
Amazon AWS
ECS(Amazon EC2 Container Service)
https://aws.amazon.com/jp/ecs/?p=tile
Google GCP
Kubernetes(k8s)
https://cloud.google.com/container-engine/?hl=ja
Microsoft Azure
DC/OS, Kubernetes(k8s),Docker Swarm
https://azure.microsoft.com/ja-jp/services/container-service/
オーケストレーション
• OSSで利用出来る実装
Apache Mesos
http://mesos.apache.org/
Mesosphere DC/OS
https://dcos.io/
Kubernetes(k8s)
https://kubernetes.io/
Docker Compose v3 + Docker Swarm
Docker Compose
• Dockerコマンドはコンテナ単位で操作
• 複数のコンテナ構築と操作が面倒くさい!
• まとめて管理出来ないか・・・
• 複数のコンテナ構成を管理する
• YAML形式ファイルで設定
• プロジェクト単位で管理
• v3でSwarmに対応
Docker Swarm
• Dockerコンテナのクラスタ構築ツール
• 別のプロダクトでしたが、Docker 1.12から
Docker Engineに統合されました。
• Swarm modeに変更するだけで機能します。
• Managerと複数のWorkerで構成
• 透過ネットワークingressによる
冗長化と負荷分散
Docker Swarm mode
Bins/Libs
Nginx
Workerノード
Bins/Libs
Nginx
Workerノード
Bins/Libs
Nginx
Managerノード
ingressオーバレイネットワーク
サービスコンテナ
• サービスコンテナ
A) docker-compose.ymlファイル作成
B) 例題としてレジストリのfriendlyhelloを使用
C) Swarm modeを実行
D) 複数サービスのコンテナを実行
E) WebブラウザでリロードしてコンテナIDを確認
F) 設定変更して負荷分散の動作を再確認
©2017 Shinichiro Ohhara

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (17)

ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
 
「トゥギャッターを支えるJS」In JSオジサン #5
「トゥギャッターを支えるJS」In JSオジサン #5「トゥギャッターを支えるJS」In JSオジサン #5
「トゥギャッターを支えるJS」In JSオジサン #5
 
kintone devCamp Vol.10 developer networkリニューアル
kintone devCamp Vol.10 developer networkリニューアルkintone devCamp Vol.10 developer networkリニューアル
kintone devCamp Vol.10 developer networkリニューアル
 
みんなの知らないネットワークの話
みんなの知らないネットワークの話みんなの知らないネットワークの話
みんなの知らないネットワークの話
 
セキュリティの基本とWordPress
セキュリティの基本とWordPressセキュリティの基本とWordPress
セキュリティの基本とWordPress
 
イベントドリブンMySQL~日本MySQLユーザ会の20年~
イベントドリブンMySQL~日本MySQLユーザ会の20年~イベントドリブンMySQL~日本MySQLユーザ会の20年~
イベントドリブンMySQL~日本MySQLユーザ会の20年~
 
Cybozu Kintone x WordPress
Cybozu Kintone x WordPressCybozu Kintone x WordPress
Cybozu Kintone x WordPress
 
平成生まれのための MINIX 講座
平成生まれのための MINIX 講座平成生まれのための MINIX 講座
平成生まれのための MINIX 講座
 
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツフルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
 
さくらのナレッジ 〜ITエンジニアに役立つ情報を全力でシェア!〜
さくらのナレッジ 〜ITエンジニアに役立つ情報を全力でシェア!〜さくらのナレッジ 〜ITエンジニアに役立つ情報を全力でシェア!〜
さくらのナレッジ 〜ITエンジニアに役立つ情報を全力でシェア!〜
 
kintone dev demo
kintone dev demokintone dev demo
kintone dev demo
 
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osakaサイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
 
サイボウズのサービスを支えるログ基盤
サイボウズのサービスを支えるログ基盤サイボウズのサービスを支えるログ基盤
サイボウズのサービスを支えるログ基盤
 
ネットワーク7不思議
ネットワーク7不思議ネットワーク7不思議
ネットワーク7不思議
 
【MashupAwards11】kintoneのご紹介
【MashupAwards11】kintoneのご紹介【MashupAwards11】kintoneのご紹介
【MashupAwards11】kintoneのご紹介
 
さくらのナレッジの裏側
さくらのナレッジの裏側さくらのナレッジの裏側
さくらのナレッジの裏側
 
ディストロの価値の作り方 at Osc2014tokyo fall
ディストロの価値の作り方 at Osc2014tokyo fallディストロの価値の作り方 at Osc2014tokyo fall
ディストロの価値の作り方 at Osc2014tokyo fall
 

Ähnlich wie Docker勉強会2017 最新基礎・応用編

「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 

Ähnlich wie Docker勉強会2017 最新基礎・応用編 (20)

最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
 
Moby Project
Moby ProjectMoby Project
Moby Project
 
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 update
 
(2017.9.7) Neo4jご紹介
(2017.9.7) Neo4jご紹介(2017.9.7) Neo4jご紹介
(2017.9.7) Neo4jご紹介
 
NaITE #23「Scrum入門&Agile Japan 2017 長崎サテライト参加報告」 OP資料
NaITE #23「Scrum入門&Agile Japan 2017 長崎サテライト参加報告」 OP資料NaITE #23「Scrum入門&Agile Japan 2017 長崎サテライト参加報告」 OP資料
NaITE #23「Scrum入門&Agile Japan 2017 長崎サテライト参加報告」 OP資料
 
自チームのLychee redmine活用例
自チームのLychee redmine活用例自チームのLychee redmine活用例
自チームのLychee redmine活用例
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
docomo Developer Supportを活用しよう
docomo Developer Supportを活用しようdocomo Developer Supportを活用しよう
docomo Developer Supportを活用しよう
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
 
デブサミ関西 2017| IoTビジネスが もっと発展するために必要なものとは?
デブサミ関西 2017| IoTビジネスが もっと発展するために必要なものとは?デブサミ関西 2017| IoTビジネスが もっと発展するために必要なものとは?
デブサミ関西 2017| IoTビジネスが もっと発展するために必要なものとは?
 
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況
 
Jawsug recap2017
Jawsug recap2017Jawsug recap2017
Jawsug recap2017
 
プログルの現在とこれから プログルリリースイベント 2017/5/13
プログルの現在とこれから プログルリリースイベント 2017/5/13プログルの現在とこれから プログルリリースイベント 2017/5/13
プログルの現在とこれから プログルリリースイベント 2017/5/13
 
NaITE(長崎IT技術者会)「活動のご紹介(2016年活動)」 於 JaSST'17 Tokyo
NaITE(長崎IT技術者会)「活動のご紹介(2016年活動)」 於 JaSST'17 TokyoNaITE(長崎IT技術者会)「活動のご紹介(2016年活動)」 於 JaSST'17 Tokyo
NaITE(長崎IT技術者会)「活動のご紹介(2016年活動)」 於 JaSST'17 Tokyo
 
connpassの戦略決定〜チームで取り組んだ価値のデザイン
connpassの戦略決定〜チームで取り組んだ価値のデザイン  connpassの戦略決定〜チームで取り組んだ価値のデザイン
connpassの戦略決定〜チームで取り組んだ価値のデザイン
 

Mehr von Shiojiri Ohhara

松本Linux勉強会 SSH 暗号化と認証のプロトコル
松本Linux勉強会 SSH 暗号化と認証のプロトコル松本Linux勉強会 SSH 暗号化と認証のプロトコル
松本Linux勉強会 SSH 暗号化と認証のプロトコル
Shiojiri Ohhara
 

Mehr von Shiojiri Ohhara (20)

ランサムウェアのおはなし
ランサムウェアのおはなしランサムウェアのおはなし
ランサムウェアのおはなし
 
フィッシングとドメイン名・DNS
フィッシングとドメイン名・DNSフィッシングとドメイン名・DNS
フィッシングとドメイン名・DNS
 
フィッシングメール
フィッシングメールフィッシングメール
フィッシングメール
 
見えないから恐ろしい!標的型サイバー攻撃の脅威
見えないから恐ろしい!標的型サイバー攻撃の脅威見えないから恐ろしい!標的型サイバー攻撃の脅威
見えないから恐ろしい!標的型サイバー攻撃の脅威
 
転ばぬ先の杖 Windows Update
転ばぬ先の杖 Windows Update転ばぬ先の杖 Windows Update
転ばぬ先の杖 Windows Update
 
フィッシングメールの紹介と対策
フィッシングメールの紹介と対策フィッシングメールの紹介と対策
フィッシングメールの紹介と対策
 
パスワード再入門
パスワード再入門パスワード再入門
パスワード再入門
 
夏休みのサイバー自由研究 (1)DockerコンテナでVuls!
夏休みのサイバー自由研究 (1)DockerコンテナでVuls!夏休みのサイバー自由研究 (1)DockerコンテナでVuls!
夏休みのサイバー自由研究 (1)DockerコンテナでVuls!
 
DNSとサイバー攻撃
DNSとサイバー攻撃DNSとサイバー攻撃
DNSとサイバー攻撃
 
Open stack 勉強会 in 塩尻
Open stack 勉強会 in 塩尻Open stack 勉強会 in 塩尻
Open stack 勉強会 in 塩尻
 
サイバーセキュリティ勉強会
サイバーセキュリティ勉強会サイバーセキュリティ勉強会
サイバーセキュリティ勉強会
 
小型コンピューターで楽しく学ぼう!
小型コンピューターで楽しく学ぼう!小型コンピューターで楽しく学ぼう!
小型コンピューターで楽しく学ぼう!
 
Ubuntu LibreOffice Update
Ubuntu LibreOffice UpdateUbuntu LibreOffice Update
Ubuntu LibreOffice Update
 
Docker入門
Docker入門Docker入門
Docker入門
 
CentOS 7 入門
CentOS 7 入門CentOS 7 入門
CentOS 7 入門
 
松本Linux勉強会 SSH 暗号化と認証のプロトコル
松本Linux勉強会 SSH 暗号化と認証のプロトコル松本Linux勉強会 SSH 暗号化と認証のプロトコル
松本Linux勉強会 SSH 暗号化と認証のプロトコル
 
松本Linux勉強会 vagrant入門
松本Linux勉強会 vagrant入門松本Linux勉強会 vagrant入門
松本Linux勉強会 vagrant入門
 
Sola勉強会 ssh再入門
Sola勉強会 ssh再入門Sola勉強会 ssh再入門
Sola勉強会 ssh再入門
 
Sola勉強会 chef入門 続編
Sola勉強会 chef入門 続編Sola勉強会 chef入門 続編
Sola勉強会 chef入門 続編
 
Sola勉強会 chef入門
Sola勉強会 chef入門Sola勉強会 chef入門
Sola勉強会 chef入門
 

Docker勉強会2017 最新基礎・応用編