Enviar pesquisa
Carregar
Dockerイメージ構築 実践テクニック
•
121 gostaram
•
23,048 visualizações
Emma Haruka Iwao
Seguir
Dockerイメージを作る手順、JenkinsからDockerを使う方法について説明しています。
Leia menos
Leia mais
Engenharia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 38
Baixar agora
Baixar para ler offline
Recomendados
爆速プレビュープロキシ pool
爆速プレビュープロキシ pool
mookjp
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Emma Haruka Iwao
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのか
Emma Haruka Iwao
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Masahito Zembutsu
Docker実践入門
Docker実践入門
hiro nemu
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
Masahito Zembutsu
Recomendados
爆速プレビュープロキシ pool
爆速プレビュープロキシ pool
mookjp
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Emma Haruka Iwao
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのか
Emma Haruka Iwao
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Masahito Zembutsu
Docker実践入門
Docker実践入門
hiro nemu
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
Masahito Zembutsu
Docker社内勉強会
Docker社内勉強会
osamu_takezawa
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
Docker超入門
Docker超入門
Katsunori Kanda
Docker入門
Docker入門
Keita Midorikawa
【社内勉強会】Docker入門
【社内勉強会】Docker入門
Kazuki Murahama
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Masahito Zembutsu
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
Ryo Nakamaru
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
Docker地雷n本勝負
Docker地雷n本勝負
RyutaKoide
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Naoki Nagazumi
Dockerについて
Dockerについて
74th
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
Masahito Zembutsu
オトナのDocker入門
オトナのDocker入門
Tsukasa Kato
Docker超入門
Docker超入門
VirtualTech Japan Inc.
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
Etsuji Nakai
捕鯨!詳解docker
捕鯨!詳解docker
雄哉 吉田
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
mookjp
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Dockerクイックツアー
Dockerクイックツアー
Etsuji Nakai
Building production server on docker
Building production server on docker
Hiroshi Miura
Building production server on docker
Building production server on docker
Hiroshi Miura
Mais conteúdo relacionado
Mais procurados
Docker社内勉強会
Docker社内勉強会
osamu_takezawa
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
Docker超入門
Docker超入門
Katsunori Kanda
Docker入門
Docker入門
Keita Midorikawa
【社内勉強会】Docker入門
【社内勉強会】Docker入門
Kazuki Murahama
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Masahito Zembutsu
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
Ryo Nakamaru
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
Docker地雷n本勝負
Docker地雷n本勝負
RyutaKoide
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Naoki Nagazumi
Dockerについて
Dockerについて
74th
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
Masahito Zembutsu
オトナのDocker入門
オトナのDocker入門
Tsukasa Kato
Docker超入門
Docker超入門
VirtualTech Japan Inc.
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
Etsuji Nakai
捕鯨!詳解docker
捕鯨!詳解docker
雄哉 吉田
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
mookjp
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Dockerクイックツアー
Dockerクイックツアー
Etsuji Nakai
Mais procurados
(20)
Docker社内勉強会
Docker社内勉強会
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker超入門
Docker超入門
Docker入門
Docker入門
【社内勉強会】Docker入門
【社内勉強会】Docker入門
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Docker地雷n本勝負
Docker地雷n本勝負
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Dockerについて
Dockerについて
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
オトナのDocker入門
オトナのDocker入門
Docker超入門
Docker超入門
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
捕鯨!詳解docker
捕鯨!詳解docker
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Dockerクイックツアー
Dockerクイックツアー
Semelhante a Dockerイメージ構築 実践テクニック
Building production server on docker
Building production server on docker
Hiroshi Miura
Building production server on docker
Building production server on docker
Hiroshi Miura
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Naoki Nagazumi
Docker handson
Docker handson
koda3
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
Dockerハンズオン
Dockerハンズオン
Kazuyuki Mori
Hadoop on LXC
Hadoop on LXC
俊夫 森
Circle ci and docker+serverspec
Circle ci and docker+serverspec
Tsuyoshi Yamada
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker
74th
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
junichi anno
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
VirtualTech Japan Inc./Begi.net Inc.
Tottoruby 20110903
Tottoruby 20110903
Takashi SAKAGUCHI
Dockerと継続的インテグレーション
Dockerと継続的インテグレーション
Yahoo!デベロッパーネットワーク
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動
Tech Summit 2016
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
maebashi
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
Saito5656
Docker & Kubernetes基礎
Docker & Kubernetes基礎
Daisuke Hiraoka
Capistrano
Capistrano
Yasuharu Fukuda
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
Toru Miyahara
Semelhante a Dockerイメージ構築 実践テクニック
(20)
Building production server on docker
Building production server on docker
Building production server on docker
Building production server on docker
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Docker handson
Docker handson
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
Dockerハンズオン
Dockerハンズオン
Hadoop on LXC
Hadoop on LXC
Circle ci and docker+serverspec
Circle ci and docker+serverspec
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
Tottoruby 20110903
Tottoruby 20110903
Dockerと継続的インテグレーション
Dockerと継続的インテグレーション
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
Docker & Kubernetes基礎
Docker & Kubernetes基礎
Capistrano
Capistrano
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
Mais de Emma Haruka Iwao
Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020
Emma Haruka Iwao
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
Emma Haruka Iwao
Google Cloud 一般公開データセット
Google Cloud 一般公開データセット
Emma Haruka Iwao
Favorite English YouTube Channels
Favorite English YouTube Channels
Emma Haruka Iwao
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
Emma Haruka Iwao
CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能
Emma Haruka Iwao
Git for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオン
Emma Haruka Iwao
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
Emma Haruka Iwao
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
Emma Haruka Iwao
Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01
Emma Haruka Iwao
RHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LT
Emma Haruka Iwao
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報
Emma Haruka Iwao
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
Emma Haruka Iwao
Ceph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and How
Emma Haruka Iwao
Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014
Emma Haruka Iwao
AWS VM import / export ハンズオン
AWS VM import / export ハンズオン
Emma Haruka Iwao
Hello, systemd
Hello, systemd
Emma Haruka Iwao
私がCephを好きな7つの理由
私がCephを好きな7つの理由
Emma Haruka Iwao
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
Emma Haruka Iwao
EC2とLinuxディストロ事情
EC2とLinuxディストロ事情
Emma Haruka Iwao
Mais de Emma Haruka Iwao
(20)
Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
Google Cloud 一般公開データセット
Google Cloud 一般公開データセット
Favorite English YouTube Channels
Favorite English YouTube Channels
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能
Git for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオン
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01
RHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LT
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
Ceph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and How
Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014
AWS VM import / export ハンズオン
AWS VM import / export ハンズオン
Hello, systemd
Hello, systemd
私がCephを好きな7つの理由
私がCephを好きな7つの理由
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
EC2とLinuxディストロ事情
EC2とLinuxディストロ事情
Dockerイメージ構築 実践テクニック
1.
Dockerイメージ構築 実践テクニック Haruka Iwao Storage Solution
Architect, Red Hat K.K. February 12, 2015
2.
自己紹介 • 岩尾 はるか
(@Yuryu) • 所属: レッドハット株式会社 – ストレージソリューションアーキテクト – 大手家電メーカー、ソーシャルゲーム会社、 Web広告ベンチャーを経て現職 • 大学・大学院で高性能計算(HPC)、分散 ファイルシステムを研究 • ゲーマーです(主に某国産MMORPG)
3.
Dockerイメージの構造 RHEL nginx Webサーバー OSの基本 ファイル OSの基本 ファイル OSの基本 ファイル nginx nginx HTML ファイル 追加 追加 nginxイメージを元に作成 RHELイメージを元に作成 実体は共有 新規
4.
Dockerイメージの作成手順 • 2ステップで作成できます • Dockerfile
の作成 • $ docker build -t <tag> Dockerfileの場所 – 例) $ docker build -t yuryu/test .
5.
Dockerfileとは • イメージ作成の手順を書いたもの • 例) FROM
registry.access.redhat.com/rhel RUN yum -‐y install httpd ADD index.html /var/www/html/index.html EXPOSE 80 CMD ["/usr/sbin/httpd", "-‐DFOREGROUND"]
6.
Dockerfile 文法 • FROM
- ベースとなるイメージ • RUN - イメージ構築で実行するコマンド • ADD - イメージ内にファイルを追加 • EXPOSE - ポートを外に見せる • CMD - デフォルトで実行されるコマンド FROM registry.access.redhat.com/rhel RUN yum -‐y install httpd ADD index.html /var/www/html/index.html EXPOSE 80 CMD ["/usr/sbin/httpd", "-‐DFOREGROUND"]
7.
Dockerfile 文法(2) • MAINTAINER
- メンテナを書く • USER - コンテナ内で実行するユーザー • WORKDIR - 基準ディレクトリの変更 • COPY - ホストからファイルのコピー – ADD が大きすぎるので分割 • その他リファレンスは下記 – https://docs.docker.com/reference/ builder/
8.
作って動かす • $ docker
run で実行 – -d バックグラウンドで実行 – -P EXPOSE したポートを割り当て $ mkdir demo-‐apache $ cd demo-‐apache $ curl -‐L -‐o Dockerfile bit.ly/1FA902p $ echo “Hello, Docker!” > index.html $ build -‐t demo-‐apache . $ docker run -‐dP demo-‐apache
9.
docker build 実行例 [yuryu@rhel7
docker-‐apache]$ docker build -‐t demo-‐apache . Sending build context to Docker daemon 3.584 kB Sending build context to Docker daemon Step 0 : FROM registry.access.redhat.com/rhel -‐-‐-‐> e1f5733f050b Step 1 : RUN yum -‐y install httpd -‐-‐-‐> Using cache -‐-‐-‐> 3679b20fa9ba Step 2 : ADD index.html /var/www/html/index.html -‐-‐-‐> Using cache -‐-‐-‐> db91c285d5ad Step 3 : EXPOSE 80 -‐-‐-‐> Using cache -‐-‐-‐> c9ceb17b169f Step 4 : CMD /usr/sbin/httpd -‐DFOREGROUND -‐-‐-‐> Using cache -‐-‐-‐> 4e99155706f6 Successfully built 4e99155706f6
10.
docker run 実行例 •
ランダムなポートと、コンテナID、コン テナ名が割り当てられる [yuryu@rhel7 docker-‐apache]$ docker run -‐dP demo-‐apache 8d6b20a1e23427ad575bed1aee9cbea5406e5ed648a645e955cd6c6c6a 34ea0a [yuryu@rhel7 docker-‐apache]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8d6b20a1e234 demo-‐apache:latest "/usr/sbin/httpd -‐DF 4 seconds ago Up 4 seconds 0.0.0.0:49247-‐>80/tcp jovial_jones
11.
いくつかの応用パターン • 固定ポートの割り当て • コンテナのリンク •
コンテナ内のボリュームを共有 • コンテナ外とボリュームを共有
12.
固定ポートの割り当て • $ docker
run -p <host port>:<guest port> • $ docker port コマンドでもポートの割り 当てを確認できる [yuryu@rhel7 docker-‐apache]$ docker run -‐dp 80:80 demo-‐ apache b027be3d09ace7c8cac594c14d07d3ddda5c32f15e14f8a28297714a69 723c54 [yuryu@rhel7 docker-‐apache]$ docker port b027be3d09ac 80/tcp -‐> 0.0.0.0:80
13.
コンテナのリンク • --link <コンテナ名>:alias •
EXPOSEしたポートを環境変数に入れる # docker run -‐d -‐e MYSQL_ROOT_PASSWORD=root -‐-‐name mysql mysql # docker run -‐it -‐-‐link mysql:mysql mysql /bin/bash # env |grep MYSQL_PORT MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP=tcp://172.17.0.155:3306 MYSQL_PORT_3306_TCP_PROTO=tcp MYSQL_PORT_3306_TCP_ADDR=172.17.0.155 MYSQL_PORT=tcp://172.17.0.155:3306 # mysql -‐-‐host=$MYSQL_PORT_3306_TCP_ADDR -‐-‐port= $MYSQL_PORT_3306_TCP_PORT -‐-‐password=root
14.
ALIAS_PORT_XXX ALIAS_PORT_XXX_TCP ALIAS_PORT_XXX_TCP_PROTO ALIAS_PORT_XXX_TCP_ADDR ALIAS_PORT_XXX_TCP_PORT コンテナのリンク(図) 提供コンテナ 使うコンテナ link aliasEXPOSE 環境変数
15.
コンテナ内のボリューム共有 • 例: VOLUME
/var/lib/mysql • --volumes-from <コンテナ名> で利用 • Data-only コンテナをベースに使うと良い # docker run -‐d -‐-‐name mysql_volume mysql echo MySQL Volume Container # docker run -‐-‐volumes-‐from mysql_volume -‐d -‐e MYSQL_ROOT_PASSWORD=root -‐-‐name mysql mysql Docker 1.4以降は docker run の代わりに docker create を利用する (ボリューム生成のタイミングが変更されている)
16.
コンテナ外とのボリューム共有 • -v <host
path>:<container path> • SELinuxの設定が必要 – # chcon -Rt svirt_sandbox_file_t $ mkdir mysql-‐volume; cd mysql-‐volume $ sudo chcon -‐Rt svirt_sandbox_file_t . $ docker run -‐v $(pwd):/var/lib/mysql -‐-‐name mysql -‐e MYSQL_ROOT_PASSWORD=root -‐d mysql
17.
Data-onlyコンテナのバックアップ • ホストでボリュームを共有して、tarで固 める $ mkdir
mysql-‐volume; cd mysql-‐volume $ sudo chcon -‐Rt svirt_sandbox_file_t . $ sudo docker run -‐-‐volumes-‐from mysql_volume -‐v $(pwd):/ backup -‐-‐name mysql-‐backup fedora tar cfz /backup/mysql-‐ backup.tar.gz /var/lib/mysql $ sudo docker run -‐-‐volumes-‐from mysql_volume -‐v $(pwd):/ backup -‐-‐name mysql-‐restore fedora tar xf /backup/mysql-‐ backup.tar.gz -‐C /
18.
ボリューム共有 Data only コンテナ 使うコンテナ volumes-from VOLUME ホスト -v <host>:<container>
19.
Dockerで作るCI 開発者A 開発者B コンテナの定義を共有 変更を通知 自動テストを実施 コンテナを取得して開発 開発者C クラウドへデプロイを指示 GitHub テスト済みコンテナイメージを クラウドサービスへデプロイ コンテナイメージを作成
20.
今回のデモの定義 • GitHubで公開中 • https://github.com/yuryu/docker-‐ jenkins-‐demo
Red Hat Enterprise Linux テストソースコードを取得 生成 起動
21.
JenkinsのDockerfile FROM registry.access.redhat.com/rhel MAINTAINER
Haruka Iwao RUN yum -‐y upgrade RUN curl -‐o /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-‐ ci.org/redhat/jenkins.repo RUN rpm -‐-‐import https://jenkins-‐ci.org/redhat/jenkins-‐ ci.org.key RUN yum -‐y install jenkins java git docker ADD run-‐jenkins.sh /root/run-‐jenkins.sh EXPOSE 8080 CMD /root/run-‐jenkins.sh
22.
run-jenkins.sh #!/bin/sh JENKINS_HOME="/var/lib/jenkins"
JENKINS_USER="jenkins" JENKINS_JAVA_OPTIONS="-‐Djava.awt.headless=true" JENKINS_PORT="8080" JENKINS_HANDLER_MAX="100" JENKINS_HANDLER_IDLE="20" JAVA_CMD="/usr/bin/java $JENKINS_JAVA_OPTIONS -‐DJENKINS_HOME=$JENKINS_HOME -‐ jar /usr/lib/jenkins/jenkins.war" OPTIONS="-‐-‐httpPort=$JENKINS_PORT -‐-‐handlerCountMax=$JENKINS_HANDLER_MAX -‐-‐ handlerCountMaxIdle=$JENKINS_HANDLER_IDLE " cd "$JENKINS_HOME" exec runuser -‐u $JENKINS_USER -‐-‐ $JAVA_CMD $OPTIONS
23.
SlaveのDockerfile FROM registry.access.redhat.com/rhel MAINTAINER
Haruka Iwao RUN yum -‐y upgrade RUN yum -‐y swap -‐-‐ remove fakesystemd -‐-‐ install systemd systemd-‐libs RUN yum -‐y install openssh-‐server java-‐1.7.0-‐openjdk RUN adduser jenkins RUN echo "jenkins:jenkins" | chpasswd RUN ssh-‐keygen -‐f /etc/ssh/ssh_host_rsa_key -‐N '' -‐t rsa RUN ssh-‐keygen -‐f /etc/ssh/ssh_host_dsa_key -‐N '' -‐t dsa RUN ssh-‐keygen -‐f /etc/ssh/ssh_host_ecdsa_key -‐N '' -‐t ecdsa RUN yum -‐y install gcc gcc-‐c++ automake autoconf make git libtool EXPOSE 22 CMD ["/usr/sbin/sshd", "-‐D"]
24.
Slaveを作るときの注意点 • RHEL標準のコンテナイメージには systemdが入っていません • fakesystemdが入っている •
systemdに依存するパッケージを入れる場 合は、本物のsystemdに置き換える – yum -y swap -- remove fakesystemd -- install systemd systemd-libs • systemdをinitとして実行する必要は無い
25.
Jenkins Docker Plugin •
JenkinsスレーブをDockerで実行 • テストごとにコンテナを生成、削除
26.
DockerにTCPをlistenさせる • Jenkinsから制御するために必要 • /etc/sysconfig/dockerを書き換える •
このままだと認証なしに誰でもアクセス 可能になるので注意! OPTIONS=-‐-‐selinux-‐enabled -‐H tcp://172.17.42.1:5555 -‐H fd://
27.
Jenkins実行手順 • Data-onlyコンテナを起動してから、 Jenkins本体を起動する $ docker
run -‐d -‐v /var/lib/jenkins -‐-‐name jenkins-‐home yuryu/demo-‐jenkins echo Data-‐only container for jenkins $ docker run -‐-‐volumes-‐from jenkins-‐home -‐d -‐p 8080:8080 yuryu/demo-‐jenkins
28.
Jenkins本体の設定 • Manage Jenkins
> Configure System
29.
Dockerの状態を確認 • Manage Jenkins
> Docker
30.
プロジェクトの設定
31.
今回デモで使うプロジェクト • 簡単なautoconf /
gtest を使うCのプロジェ クトを用意しました • https://github.com/yuryu/gtest-‐demo
32.
テスト実行中の様子 • コンテナ内で configure
が走っている
33.
テスト終了後 • 設定すれば、コンテナをイメージに commitできる
34.
実際にやってみます
35.
cAdvisor • Dockerのための監視ツール – https://github.com/google/cadvisor
36.
cAdvisorの画面
37.
cAdvisor起動方法 # setenforce Permissive
$ docker run -‐-‐volume=/:/rootfs:ro -‐-‐volume=/var/run:/var/run:rw -‐-‐volume=/sys:/sys:ro -‐-‐volume=/var/lib/docker/:/var/lib/docker:ro -‐-‐publish=8080:8080 -‐-‐detach=true -‐-‐name=cadvisor -‐-‐volume=/cgroup:/cgroup google/cadvisor:latest
38.
ご清聴ありがとうございました
Baixar agora