SlideShare a Scribd company logo
1 of 38
Download to read offline
Dockerイメージ構築
実践テクニック
Haruka Iwao
Storage Solution Architect, Red Hat K.K.
February 12, 2015
自己紹介
•  岩尾 はるか (@Yuryu)
•  所属: レッドハット株式会社
– ストレージソリューションアーキテクト
– 大手家電メーカー、ソーシャルゲーム会社、
Web広告ベンチャーを経て現職
•  大学・大学院で高性能計算(HPC)、分散
ファイルシステムを研究
•  ゲーマーです(主に某国産MMORPG)
Dockerイメージの構造
RHEL
nginx
Webサーバー
OSの基本
ファイル
OSの基本
ファイル
OSの基本
ファイル
nginx
nginx
HTML
ファイル
追加
追加
nginxイメージを元に作成
RHELイメージを元に作成
実体は共有
新規
Dockerイメージの作成手順
•  2ステップで作成できます
•  Dockerfile の作成
•  $ docker build -t <tag> Dockerfileの場所
– 例) $ docker build -t yuryu/test .
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"]	
  
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"]	
  
Dockerfile 文法(2)
•  MAINTAINER - メンテナを書く
•  USER - コンテナ内で実行するユーザー
•  WORKDIR - 基準ディレクトリの変更
•  COPY - ホストからファイルのコピー
– ADD が大きすぎるので分割
•  その他リファレンスは下記
– https://docs.docker.com/reference/
builder/	
  
作って動かす
•  $ 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	
  
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	
  
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	
  	
  	
  	
  	
  	
  	
  	
  	
  
いくつかの応用パターン
•  固定ポートの割り当て
•  コンテナのリンク
•  コンテナ内のボリュームを共有
•  コンテナ外とボリュームを共有
固定ポートの割り当て
•  $ 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	
  
コンテナのリンク
•  --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	
  
ALIAS_PORT_XXX
ALIAS_PORT_XXX_TCP
ALIAS_PORT_XXX_TCP_PROTO
ALIAS_PORT_XXX_TCP_ADDR
ALIAS_PORT_XXX_TCP_PORT
コンテナのリンク(図)
提供コンテナ 使うコンテナ
link
aliasEXPOSE
環境変数
コンテナ内のボリューム共有
•  例: 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 を利用する
(ボリューム生成のタイミングが変更されている)
コンテナ外とのボリューム共有
•  -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	
  
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	
  /	
  	
  
ボリューム共有
Data only
コンテナ
使うコンテナ
volumes-from
VOLUME
ホスト
-v <host>:<container>
Dockerで作るCI
開発者A
開発者B
コンテナの定義を共有
変更を通知
自動テストを実施
コンテナを取得して開発
開発者C
クラウドへデプロイを指示
GitHub
テスト済みコンテナイメージを
クラウドサービスへデプロイ
コンテナイメージを作成
今回のデモの定義
•  GitHubで公開中
•  https://github.com/yuryu/docker-­‐
jenkins-­‐demo	
  
Red Hat Enterprise Linux
テストソースコードを取得
生成
起動
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	
  
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
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"]	
  
Slaveを作るときの注意点
•  RHEL標準のコンテナイメージには
systemdが入っていません
•  fakesystemdが入っている
•  systemdに依存するパッケージを入れる場
合は、本物のsystemdに置き換える
– yum -y swap -- remove fakesystemd -- install
systemd systemd-libs
•  systemdをinitとして実行する必要は無い
Jenkins Docker Plugin
•  JenkinsスレーブをDockerで実行
•  テストごとにコンテナを生成、削除
DockerにTCPをlistenさせる
•  Jenkinsから制御するために必要
•  /etc/sysconfig/dockerを書き換える
•  このままだと認証なしに誰でもアクセス
可能になるので注意!
OPTIONS=-­‐-­‐selinux-­‐enabled	
  -­‐H	
  tcp://172.17.42.1:5555	
  -­‐H	
  fd://	
  
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	
  
Jenkins本体の設定
•  Manage Jenkins > Configure System
Dockerの状態を確認
•  Manage Jenkins > Docker
プロジェクトの設定
今回デモで使うプロジェクト
•  簡単なautoconf	
  /	
  gtest	
  を使うCのプロジェ
クトを用意しました	
  
•  https://github.com/yuryu/gtest-­‐demo
テスト実行中の様子
•  コンテナ内で configure が走っている
テスト終了後
•  設定すれば、コンテナをイメージに
commitできる
実際にやってみます
cAdvisor
•  Dockerのための監視ツール
– https://github.com/google/cadvisor
cAdvisorの画面
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
ご清聴ありがとうございました

More Related Content

What's hot

Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
【社内勉強会】Docker入門
【社内勉強会】Docker入門【社内勉強会】Docker入門
【社内勉強会】Docker入門Kazuki Murahama
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンRyo Nakamaru
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負RyutaKoide
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 
Dockerについて
DockerについてDockerについて
Dockerについて74th
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Masahito Zembutsu
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Etsuji Nakai
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 

What's hot (20)

Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
Docker入門
Docker入門Docker入門
Docker入門
 
【社内勉強会】Docker入門
【社内勉強会】Docker入門【社内勉強会】Docker入門
【社内勉強会】Docker入門
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
Dockerについて
DockerについてDockerについて
Dockerについて
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 

Similar to Dockerイメージ構築 実践テクニック

Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Naoki Nagazumi
 
Docker handson
Docker handsonDocker handson
Docker handsonkoda3
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspecTsuyoshi Yamada
 
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDockerコマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker74th
 
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製するjunichi anno
 
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動Tech Summit 2016
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 

Similar to Dockerイメージ構築 実践テクニック (20)

Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
Docker handson
Docker handsonDocker handson
Docker handson
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspec
 
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDockerコマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker
 
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
Dockerと継続的インテグレーション
Dockerと継続的インテグレーションDockerと継続的インテグレーション
Dockerと継続的インテグレーション
 
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Capistrano
CapistranoCapistrano
Capistrano
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 

More from Emma Haruka Iwao

Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020Emma Haruka Iwao
 
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
Woman Tech Terrace 2020 Keynote - 夢を持ち続けるWoman Tech Terrace 2020 Keynote - 夢を持ち続ける
Woman Tech Terrace 2020 Keynote - 夢を持ち続けるEmma Haruka Iwao
 
Google Cloud 一般公開データセット
Google Cloud 一般公開データセットGoogle Cloud 一般公開データセット
Google Cloud 一般公開データセットEmma Haruka Iwao
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube ChannelsEmma Haruka Iwao
 
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月Emma Haruka Iwao
 
CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能Emma Haruka Iwao
 
Git for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオンGit for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオンEmma Haruka Iwao
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Emma Haruka Iwao
 
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015Emma Haruka Iwao
 
Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01Emma Haruka Iwao
 
RHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LTRHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LTEmma Haruka Iwao
 
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報Emma Haruka Iwao
 
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところEmma Haruka Iwao
 
Ceph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and HowCeph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and HowEmma Haruka Iwao
 
Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014Emma Haruka Iwao
 
AWS VM import / export ハンズオン
AWS VM import / export ハンズオンAWS VM import / export ハンズオン
AWS VM import / export ハンズオンEmma Haruka Iwao
 
私がCephを好きな7つの理由
私がCephを好きな7つの理由私がCephを好きな7つの理由
私がCephを好きな7つの理由Emma Haruka Iwao
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
EC2とLinuxディストロ事情
EC2とLinuxディストロ事情EC2とLinuxディストロ事情
EC2とLinuxディストロ事情Emma Haruka Iwao
 

More from Emma Haruka Iwao (20)

Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020Friction 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 - 夢を持ち続けるWoman Tech Terrace 2020 Keynote - 夢を持ち続ける
Woman Tech Terrace 2020 Keynote - 夢を持ち続ける
 
Google Cloud 一般公開データセット
Google Cloud 一般公開データセットGoogle Cloud 一般公開データセット
Google Cloud 一般公開データセット
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube Channels
 
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
 
CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能CephとGluster次期バージョンでの新機能
CephとGluster次期バージョンでの新機能
 
Git for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオンGit for Begineers GitHub ハンズオン
Git for Begineers GitHub ハンズオン
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
 
Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01Docker向けOSとか[LT] @ #techgirl 2015/01
Docker向けOSとか[LT] @ #techgirl 2015/01
 
RHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LTRHEL, CentOS 7 に移行しよう! LT
RHEL, CentOS 7 に移行しよう! LT
 
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報
 
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
 
Ceph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and HowCeph 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 2014Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014
 
AWS VM import / export ハンズオン
AWS VM import / export ハンズオンAWS VM import / export ハンズオン
AWS VM import / export ハンズオン
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
私がCephを好きな7つの理由
私がCephを好きな7つの理由私がCephを好きな7つの理由
私がCephを好きな7つの理由
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
EC2とLinuxディストロ事情
EC2とLinuxディストロ事情EC2とLinuxディストロ事情
EC2とLinuxディストロ事情
 

Dockerイメージ構築 実践テクニック