SlideShare uma empresa Scribd logo
1 de 32
~Dockerfileの開発を劇的に楽にする~
Dockerfile開発環境 EDGE
斎藤辰徳
1
TIS株式会社
IT基盤エンジニアリング第1部
斎藤辰徳
(さいとう・たつのり)
HN: bbrfkr
(ビビリフクロウ)
2
趣味
3
サーバ構築
4
5
よろしく
お願いします!
6
ここから本題
7
8
Dockerおよびコンテナ
を使うメリット
9
• ホストの環境を汚さない
• 迅速にアプリが起動
• 高いポータビリティ
10
便利なものは
活用しない手はない!
11
コンテナイメージの作成には
Dockerfileを使う
12
Dockerfileから
コンテナイメージができるまで
13
1. Dockerfileを書く/修正する
2. docker buildコマンドを叩く
3. イメージからコンテナを起動
4. 期待したコンテナであるかテスト
5. 1.-4.を繰り返す
14
2. docker buildコマンドを叩く
毎回以下を叩きますか?(ブルゾン風)
# docker build -t bbrfkr0129/test 
> --build-arg key1=value1 
> --build-arg key2=value2 
> --build-arg key3=value3 
> --build-arg key4=value4 
> --build-arg key5=value5
新しいツール、欲しくない?
15
4. 期待したコンテナであるかテスト
# docker build -t bbrfkr0129/httpd
# docker run -d --name test bbrfkr0129/httpd
# docker exec -it test /bin/bash
# ps –ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
# (修正作業)
# docker build –t bbrfkr0129/httpd
# docker run -d --name test bbrfkr0129/httpd
# docker exec -it test /bin/bash
# ps –ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
…
テストのたびに
これを叩くのか…
16
# docker build -t bbrfkr0129/test --build-arg key1=value1 --build-arg
key2=value2 --build-arg key3=value3 --build-arg key4=value4 --build-arg
key5=value5
# docker run -d --name test bbrfkr0129/test
# docker exec -it test /bin/bash
# ps -ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
# (修正作業)
# docker build -t bbrfkr0129/test --build-arg key1=value1 --build-arg
key2=value2 --build-arg key3=value3 --build-arg key4=value4 --build-arg
key5=value5
# docker run -d --name test bbrfkr0129/test
# docker exec -it test /bin/bash
# ps -ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
17
や
っ
て
ら
れ
っ
か
い
!
18
そんな思いを解消するべく…
19
Dockerfile開発環境を
作っちゃいました♪
20
EDGE
(Elastic Dockerfie Generating Environment)
21
使い方
22
1. テストコードを書く
require './.spec_helper'
describe ("build_test") do
describe ("check pip packages are installed") do
pips = ["ansible"]
describe command("source /root/.bash_profile && pip list") do
pips.each do |pip|
describe ("#{ pip }") do
pip_ver = property['args'][pip.upcase.gsub("-","_") + '_VER']
if pip_ver != nil
its(:stdout) { should match /^#{ pip }s(.*#{ Regexp.escape(pip_ver) }.*)$/ }
else
its(:stdout) { should match /^#{ pip }s(.*)$/ }
end
end
end
<省略>
Serverspecを使うため
Serverspecの規則に則って
書く
23
2. Dockerfileを書く
FROM centos:7.3.1611
WORKDIR /root
# install ansible
RUN yum -y install gcc python-devel openssl-devel libffi-devel
RUN curl -o /tmp/get-pip.py https://bootstrap.pypa.io/get-pip.py
RUN python /tmp/get-pip.py
ARG ANSIBLE_VER
RUN if [ "$ANSIBLE_VER" = "" ] ; then 
pip install ansible ; 
else 
pip install ansible==$ANSIBLE_VER ; 
fi
<省略>
24
3. ビルド変数をiniファイルで定義
image=edge_test/build_test:latest
[args]
ROOT_PASS=password
ANSIBLE_VER=2.0.0.0
RUBY_VER=2.3.1
ITAMAE_VER=1.9.9
SERVERSPEC_VER=2.37.0
INFRATASTER_VER=0.3.1
DOCKER_API_VER=1.29.0
DOCKER_COMPOSE_VER=1.11.1
25
4. イメージビルドの実行
# Bin/edge build build_test
26
5. イメージテストの実行
# Bin/edge spec build_test
27
# docker build -t bbrfkr0129/test --build-arg key1=value1 --build-arg
key2=value2 --build-arg key3=value3 --build-arg key4=value4 --build-arg
key5=value5
# docker run -d --name test bbrfkr0129/test
# docker exec -it test /bin/bash
# ps -ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
# (修正作業)
# docker build -t bbrfkr0129/test --build-arg key1=value1 --build-arg
key2=value2 --build-arg key3=value3 --build-arg key4=value4 --build-arg
key5=value5
# docker run -d --name test bbrfkr0129/test
# docker exec -it test /bin/bash
# ps -ef
# cat /etc/httpd/conf/httpd.conf
# exit
# docker rm -f test
28
# Bin/edge build test
# Bin/edge spec test
# (修正作業)
# Bin/edge build test
# Bin/edge spec test
楽!
すっきり!
29
いかがでしたでしょうか?
30
試してみたい方
詳細な使い方を見たい方は
以下のURLをチェック!!
https://github.com/bbrfkr/edge
おわり

Mais conteúdo relacionado

Mais procurados

aws上でcloud foundryを構築してみた
aws上でcloud foundryを構築してみたaws上でcloud foundryを構築してみた
aws上でcloud foundryを構築してみた
kokuboyuichi
 

Mais procurados (20)

Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
Kubernetes etc.. & rancher 2.0 technical preview
Kubernetes etc.. & rancher 2.0 technical previewKubernetes etc.. & rancher 2.0 technical preview
Kubernetes etc.. & rancher 2.0 technical preview
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
ECS-CLI in Action
ECS-CLI in ActionECS-CLI in Action
ECS-CLI in Action
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
対話AI on Kubernetes
対話AI on Kubernetes対話AI on Kubernetes
対話AI on Kubernetes
 
さくらのインフラコード
さくらのインフラコードさくらのインフラコード
さくらのインフラコード
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
 
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
 
aws上でcloud foundryを構築してみた
aws上でcloud foundryを構築してみたaws上でcloud foundryを構築してみた
aws上でcloud foundryを構築してみた
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用
 

Semelhante a ~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Semelhante a ~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE (20)

実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Dockerと継続的インテグレーション
Dockerと継続的インテグレーションDockerと継続的インテグレーション
Dockerと継続的インテグレーション
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspec
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
Dockerでデプロイ
DockerでデプロイDockerでデプロイ
Dockerでデプロイ
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 

~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE