SlideShare ist ein Scribd-Unternehmen logo
1 von 24
初心者が伝えるDocker超入門
@chichi1091
自己紹介
• Twitter:てっしー(@chichi1091)
• 地方の小さいSIer
• Java、PHP、C#が主な言語
• 家族構成(妻、長男、次男、三男、長
女)
講師とか言っていますがDockerはめちゃ
くちゃ初心者です(経験は1週間だけ)
間違いがあればツッコミよろしくです
Dockerとは?
Dockerとは?
• Docker社(旧dotCloud)が
PaaS事業で使っていた技術を
OSS化したもの
• アプリケーションを「コンテナ」
にパッケージングしてデプロイ、実行という
流れをコード化できる
• Dockerfileがあればいつでも同じものが再現で
きる
• Go言語で書かれている
この辺がコンテナっぽ
い
他の仮想化技術との違い
Hyperバイザーではなくコンテナ型の仮想化技術
<Hyperバイザー型>
• 仮想マシンを制御する
プログラムが必要
• ホストサーバ全体を
仮想化で利用
<コンテナ型>
• OSカーネルはホストOS
のものを共有
• 各コンテナはプロセスとして認識
• ホストマシンへの処理負荷が低い
VMWare esxi
ハードウェア
Hyper バイザー
VM VM
Bin/lib
s
Bin/lib
s
APP
APP
APP
APP
ハードウェア
OS
Bin/libs Bin/libs
APP
APP
APP
APP
Docker
Docker
コンテナ
結局コンテナってなに?
アプリ本体、必要なライブラリをパッケー
ジングしたもの(ゲストOSは含まない)
例:Wordpress+PHP+Apache+MySQL=コンテナ
Dockerのメリット・デメリッ
ト
<メリット>
• ホストOSのカーネルを直接使うためオーバーヘッド
が小さく高速
• イメージ(雛形)からコンテナ(実体)を作るため
同じ環境を簡単に複数作れる
<デメリット>
• 学習コストが高い(特にネットワーク関係)
• WindowsゲストOS非対応
Dockerやってみよう
Dockerやってみよう
CentOS上にDocker環境をインストール
1. Dockerパッケージをインストール
# yum install docker
2. bridge-utilsパッケージもインストール
# yum install bridge-utils
3. Dockerサービスの起動
# service docker start
Dockerイメージのダウンロー
ド
1. CentOSのDockerイメージを検索
# docker search centos
2. CentOSのDockerイメージをダウンロード
# docker pull centos
(最新版がダウンロードされる)
3. Dockerイメージを確認
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest eeb3a076a0be 3 days ago 196.7 MB
Dockerの実行
1. CentOSコンテナの実行
# docker run –i –t centos /bin/bash
・-i 標準入力有効
・-t 仮想端末あり
・-d バックグラウンド実行
・-e 環境変数を指定(ex:-e HOGE=“fuga”)
・-v ホストマシンにマウント(ex:-v /data/logs:/var/log)
2. コンテナの確認
# docker ps –a
・-a 終了済みも含む
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
259b7789591c centos:latest "/bin/bash" 25 seconds ago
berserk_davinci
その他便利なコマンド
• コンテナの停止/再実行/一時停止
# docker stop/start/pause
• コンテナに接続
# docker attach
• 終了済みコンテナの削除
# docker rm <CONTAINER>
• イメージの削除
# docker rmi <IMAGE>
• コンテナのイメージ化
# docker commit <CONTAINER> <IMAGE>
• コンテナ情報の表示
# docker inspect
Dockerfile
Dockerfile
Dockerfileってなに?
• Dockerコンテナの構成内容をまとめて記述す
るテキスト型式のファイル
• 1行につき1命令を「{命令} {引数}」で
記述する
• 「docker build」コマンドで順次実行される
Dockerfileに書ける命令
命令 内容
FROM 元になるイメージ
MAINTAINE
R
Dockerfileの作成者
RUN コマンドの実行
ADD ファイル、ディレクトリの追加
CMD コンテナの実行コマンド(docker runで上書き
可)
ENTRYPOIN
T
コンテナの実行コマンド(docker runで上書き
不可)
WORKDIR 作業ディレクトリの指定
ENV 環境変数の設定
USER 実行ユーザの設定
EXPOSE ポートの指定
VOLUME マウント
Dockerfileの例
ENTRYPOINTでhttpdの起動を指定しているのでdocker run時にコマンド指定が不
要
FROM centos:latest
MAINTAINER cterash<cterash@jops.co.jp>
RUN yum install httpd –y
ENTRYPOINT /usr/sbin/httpd –D FOREGROUND
• Dockerfileの作成
• イメージの作成
# docker build –t <IMAGE_NAME> ./Dockerfile
• コンテナの作成
# docker run –i –t <IMAGE_NAME>
Docker活用事例
他力本願でごめんなさい
Docker活用事例
Jenkins + Pipeline Plugin + Docker
Jenkins上でDockerを使う
方法をまとめたスライド
Docker上で実施したテストを
Jenkinsで参照することが
紹介されています
Docker活用事例
LIGでのDocker活用
LIGの自社案件でのDocker事例
を紹介したスライド
マイクロサービス化などいまどき
っぽい環境です
余談
先月LIG社の勉強会「づや会」に参加しました
とってもおしゃれなオフィスでした
Docker活用事例
Docker を使った開発環境構築事例
モバイルゲームサービス
の開発環境をDocker化
した事例
Windows上でDockerを
利用する方法などが記載されています
まとめ
まとめ
• サーバリソースを抑えつつ仮想化が可能!
• インフラもコード化できてみんな同じ環境で
作業できる!(俺の環境では動いたとはもう言わせない)
• ぶっ壊れてもすぐ復元できる!
• でも学習コストが高い(運用でDockerを使い出すとノ
ウハウがないとつらい)
• 開発環境やCIと相性がとってもよさそう!
• 「Dockerで提供します」とか言えたらなんか
カッコいい!
• DockerHubとかはまたの機会で( TДT)ゴメンヨー
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Kvwatcher
KvwatcherKvwatcher
Kvwatcher
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
Reading NATS
Reading NATSReading NATS
Reading NATS
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
20170124 linux basic_1
20170124 linux basic_120170124 linux basic_1
20170124 linux basic_1
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
Cloud foundryのコミュニティを紹介するよ
Cloud foundryのコミュニティを紹介するよCloud foundryのコミュニティを紹介するよ
Cloud foundryのコミュニティを紹介するよ
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
BluemixでDockerを試してみる
BluemixでDockerを試してみるBluemixでDockerを試してみる
BluemixでDockerを試してみる
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LT「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LT
 
Infrakit Docker_Tokyo_meetup
Infrakit Docker_Tokyo_meetupInfrakit Docker_Tokyo_meetup
Infrakit Docker_Tokyo_meetup
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
Kubernetes × 可用性 -- cndjp第3回勉強会
Kubernetes × 可用性 -- cndjp第3回勉強会Kubernetes × 可用性 -- cndjp第3回勉強会
Kubernetes × 可用性 -- cndjp第3回勉強会
 

Ähnlich wie 初心者が伝えるDocker超入門

Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Tomoya Kita
 

Ähnlich wie 初心者が伝えるDocker超入門 (20)

Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
 
AngularJSを通してDockerと触れ合った
AngularJSを通してDockerと触れ合ったAngularJSを通してDockerと触れ合った
AngularJSを通してDockerと触れ合った
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
 
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Heroku
HerokuHeroku
Heroku
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう
 
Dockerfile for Perl development
Dockerfile for Perl developmentDockerfile for Perl development
Dockerfile for Perl development
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Ppl
PplPpl
Ppl
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)
 
年納めにDockerやろうず
年納めにDockerやろうず年納めにDockerやろうず
年納めにDockerやろうず
 
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
 

初心者が伝えるDocker超入門