Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
今さら聞けない人のための
Docker超入門
CentOS 7.2対応版
日本仮想化技術株式会社
代表取締役社長兼CEO
宮原 徹(@tmiyahar)
http://VirtualTech.jp
自己紹介
• 本名:宮原 徹
• 1972年1月 神奈川県生まれ
• 1994年3月 中央大学法学部法律学科卒業
• 1994年4月 日本オラクル株式会社入社
– PCサーバ向けRDBMS製品マーケティングに従事
– Linux版Oracle8...
日本仮想化技術株式会社 概要
• 社名:日本仮想化技術株式会社
– 英語名:VirtualTech Japan Inc.
– 略称:日本仮想化技術/VTJ
• 設立:2006年12月
• 資本金:3,000万円
• 売上高:8,700万円(20...
情報サイト:EnterpriseCloud.jp
• OpenStackで始めるエ
ンタープライズクラウ
ドの情報サイト
• OpenStack導入手順
書のダウンロード
• 各種プレゼン資料
• その他ブログ記事
4
会社のご紹介
仲間募集のお知らせ
5
日本仮想化技術株式会社は
• 仮想化技術のエキスパート集団
• 進取の精神
• 豊富な検証機材で新技術を追求
• 自由な雰囲気の職場
一緒に頑張ってくれる仲間を募集中
• サーバー、ネットワークエンジニア
– 新卒からキャリアアップしたい経験者まで
– クラウド技術、自動化技術に興味がある人
• コンサルタント
– 通信系に強い人大歓迎
• 短期インターン
– 学生はもちろん...
お問い合わせ先
メールにて
recruit@VirtualTech.jp
履歴書、職務経歴書をご用意ください
ご紹介も是非。きっと何かいいことあります。
8
どんなオフィス?
•渋谷駅より徒歩5分
•全員がゆったりデスク
とアーロンチェア
オフィスは渋谷駅至近
10
日本仮想化技術
オフィス
ハ
チ
公
渋谷駅東
口
交差点信
号
渋
谷
駅
ヒカリエの中を通ると
雨の日にあまり濡れません
渋
谷
郵
便
局
優れた環境が優れた成果を生む
渋谷駅徒歩5分の新オフィス
幅140cmのゆったりデスクとアーロンチェア
MacBook Pro/Airと大型液晶モニタが標準
キーボード・マウスも自由
充実の検証環境
最新機材で作業
充実の福利厚生
• マッサージチェア
• 充実のフリードリンクコーナー
– 各種お茶類、ネスプレッソなど各種取り揃え
• 誕生日はケーキでお祝い
• 雑誌年間購読制度
– 何でも好きな雑誌を年間購読
• 書籍購入支援制度
– 好きな書籍(漫画も...
書籍購入支援制度 活用例
13
本日のアジェンダ
• Dockerを動かそう
• Dockerコンテナのライフサイクル
• Dockerの操作とトラブルシューティング 基礎の基礎
• Dockerのネットワーク
• Dockerfileを書いてみる
• Dockerを触ったこ...
Dockerを動かそう
15
Dockerの特徴
• 1コンテナ1プロセスで動作する
– 仮想マシンと比べてハイパーバイザーのオーバーヘッ
ドが無いのでより高速
• ≒コンテナ内で1プロセス(1タスク)が動作する
– サービスプロセスと並行で対話型シェルを動かすなど
の考え...
各方式の比較
ベアメタル(物理) 仮想マシン コンテナ
性能 最も速い I/Oが遅い 速い
OS 1つだけ 複数種類を混在可
能
カーネルは1つだけ
だが、ディストリ
ビューションは混在
可能
リソース使用 システムで専有 メモリの無駄が多い ...
Dockerをインストールする
1. CentOS 7.2をインストール
2. アップデートを行う
– # yum update -y
3. Dockerパッケージをインストール
– # yum install docker
– Docker用...
Docker用ストレージ領域
• Docker用のストレージ領域をLVM領域に作成
– Thin Poolと呼ばれている
– 設定しないとループバックデバイスが使用されるが非推奨
1. 未使用の/dev/sdbを用意する(仮想ディスク追加など)...
サービスの起動
1. dockerサービスを起動する
– # systemctl start docker
2. システム起動時に自動起動するように有
効化しておく
– # systemctl enable docker
• Dockerサービ...
docker-storage-setup実行例
# docker-storage-setup
現在、誰もこのディスクを使っていないかを調べます...
OK
ディスク /dev/sdb: シリンダ数 8354、ヘッド数 255、63 セクタ/トラ...
firewalldの止め方
• 後ほどDockerのネットワークについて調べる
際にfirewalldを止めておくと設定が見やすい
1. iptables-servicesパッケージをインストール
– 最小構成だとインストールされない
– # ...
Dockerイメージをダウンロード
1. CentOSのDockerイメージを検索
– # docker search centos
2. CentOSのDockerイメージをダウンロード
– # docker pull centos
– 最新...
Dockerコンテナを実行(基本)
1. CentOSイメージでコンテナを実行
– # docker run -it centos /bin/bash
– -i, --interactive=true|false
– -t, --tty=tru...
Dockerコンテナ実行(応用)
1. コンテナ名を付ける
– # docker run --name=名前 イメージ名 コマンド
2. シェルからコマンドを実行させる
– # docker run イメージ名 /bin/bash -c "コマ...
Dockerコンテナのライフサイクル
26
イメージとコンテナの変移
27
centos
①コンテナとして実行(docker run)
httpd ② # yum install httpd
centos
httpd
③コンテナをイメージ化(docker commit)
④イメージをコン...
コンテナをイメージ化
1. コンテナにhttpdパッケージをインストール
– # docker run --name=httpd centos /bin/bash -c
"yum install httpd -y"
2. httpdコンテナをコ...
新たなイメージからコンテナ実行
1. コンテナでhttpdを実行し、コンテナのポート80
番をホストの8080番に紐付ける
– # docker run -d -p 8080:80 --name=web1
httpd_template /usr...
ストレージの使用状況を確認
• lsblkコマンドでThin Poolにしていしたブロッ
クデバイスを確認する
30
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ...
Dockerの操作と
トラブルシューティング
基礎の基礎
覚えておきたいコマンド
• docker inspect コンテナ名
– 実行中のコンテナの情報を確認できる
• docker stop/start/pause コンテナ名
– 実行中のコンテナを停止/再実行/一時停止
• docker att...
トラブルシューティング
• 対話式シェルを実行して手動実行
– エラーで停止したコンテナでシェル実行し、ログなどを
確認できる
– # docker exec -it コンテナ名 /bin/bash
• dockerサービスを再起動してみる
–...
Dockerのネットワーク
34
Dockerのネットワーク構成図
35
Dockerコンテナ
eth0
eth0
docker0
veth veth
Dockerコンテナ
eth0
仮想的に直結
ブリッジ接続
NAPT接続(IPマスカレードやポート転送)
外部
ホストのNIC周りの確認
[root@localhost ~]# ip addr show
(略)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast sta...
iptables-saveの実行結果
*nat
:PREROUTING ACCEPT [3251:517949]
:INPUT ACCEPT [1495:211919]
:OUTPUT ACCEPT [74:5868]
:POSTROUTING...
Dockerfileを書いてみる
38
Dockerfileに書ける内容
命令 内容
FROM 元となるイメージ
MAINTAINER Dockerfileの制作者
RUN docker build時にコマンド実行
ADD ファイル、ディレクトリの追加
COPY ファイル、ディレクト...
Dockerfileの使用例(1)
• Dockerfileを作成する
– ENTRYPOINTでhttpdの起動を指定しているので、
docker run時にhttp起動の指定が不要
• docker buildでDockerイメージを作る
...
Dockerfileの使用例(2)
• Dockerイメージが作成されたことを確認
– # docker images
• Docker buildで作成したイメージでコンテナを
実行する
– # docker run -d -p 8081:8...
まとめと課題
• CentOS 7初期の頃は不整合が多く(特にsystemd
廻り)扱いにくかったが、こなれてきたので一度
触ってみるにはいい塩梅
– httpdとか動かなかった(/var/runがtmpfsだから)
• どこまでイメージを作り...
ありがとうございました
43
Upcoming SlideShare
Loading in …5
×

今さら聞けない人のためのDocker超入門 CentOS 7.2対応版

2,367 views

Published on

アジェンダ
- Dockerを動かそう
- Dockerコンテナのライフサイクル
- Dockerの操作とトラブルシューティング 基礎の基礎
- Dockerのネットワーク
Dockerfileを書いてみる

Published in: Technology
  • Be the first to comment

今さら聞けない人のためのDocker超入門 CentOS 7.2対応版

  1. 1. 今さら聞けない人のための Docker超入門 CentOS 7.2対応版 日本仮想化技術株式会社 代表取締役社長兼CEO 宮原 徹(@tmiyahar) http://VirtualTech.jp
  2. 2. 自己紹介 • 本名:宮原 徹 • 1972年1月 神奈川県生まれ • 1994年3月 中央大学法学部法律学科卒業 • 1994年4月 日本オラクル株式会社入社 – PCサーバ向けRDBMS製品マーケティングに従事 – Linux版Oracle8の日本市場向け出荷に貢献 • 2000年3月 株式会社デジタルデザイン 東京支社長および株 式会社アクアリウムコンピューター 代表取締役社長に就任 – 2000年6月 (株)デジタルデザイン、ナスダック・ジャパン上場(4764) • 2001年1月 株式会社びぎねっと 設立 • 2006年12月 日本仮想化技術株式会社 設立 • 2008年10月 IPA「日本OSS貢献者賞」受賞 • 2009年10月 日中韓OSSアワード 「特別貢献賞」受賞 • ガンダム勉強会主宰・好きなモビルスーツはアッガイ 2
  3. 3. 日本仮想化技術株式会社 概要 • 社名:日本仮想化技術株式会社 – 英語名:VirtualTech Japan Inc. – 略称:日本仮想化技術/VTJ • 設立:2006年12月 • 資本金:3,000万円 • 売上高:8,700万円(2015年7月期) • 本社:東京都渋谷区渋谷1-8-1 • 取締役:宮原 徹(代表取締役社長兼CEO) • 伊藤 宏通(取締役CTO) • スタッフ:9名(うち、7名が仮想化技術専門エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 – 仮想化技術に関する各種調査 – 仮想化技術に関連したソフトウェアの開発 – 仮想化技術を導入したシステムの構築 – OpenStackの導入支援・新規機能開発 ベンダーニュートラルな 独立系仮想化技術の エキスパート集団 3
  4. 4. 情報サイト:EnterpriseCloud.jp • OpenStackで始めるエ ンタープライズクラウ ドの情報サイト • OpenStack導入手順 書のダウンロード • 各種プレゼン資料 • その他ブログ記事 4
  5. 5. 会社のご紹介 仲間募集のお知らせ 5
  6. 6. 日本仮想化技術株式会社は • 仮想化技術のエキスパート集団 • 進取の精神 • 豊富な検証機材で新技術を追求 • 自由な雰囲気の職場
  7. 7. 一緒に頑張ってくれる仲間を募集中 • サーバー、ネットワークエンジニア – 新卒からキャリアアップしたい経験者まで – クラウド技術、自動化技術に興味がある人 • コンサルタント – 通信系に強い人大歓迎 • 短期インターン – 学生はもちろん、社会人も可 7
  8. 8. お問い合わせ先 メールにて recruit@VirtualTech.jp 履歴書、職務経歴書をご用意ください ご紹介も是非。きっと何かいいことあります。 8
  9. 9. どんなオフィス? •渋谷駅より徒歩5分 •全員がゆったりデスク とアーロンチェア
  10. 10. オフィスは渋谷駅至近 10 日本仮想化技術 オフィス ハ チ 公 渋谷駅東 口 交差点信 号 渋 谷 駅 ヒカリエの中を通ると 雨の日にあまり濡れません 渋 谷 郵 便 局
  11. 11. 優れた環境が優れた成果を生む 渋谷駅徒歩5分の新オフィス 幅140cmのゆったりデスクとアーロンチェア MacBook Pro/Airと大型液晶モニタが標準 キーボード・マウスも自由 充実の検証環境 最新機材で作業
  12. 12. 充実の福利厚生 • マッサージチェア • 充実のフリードリンクコーナー – 各種お茶類、ネスプレッソなど各種取り揃え • 誕生日はケーキでお祝い • 雑誌年間購読制度 – 何でも好きな雑誌を年間購読 • 書籍購入支援制度 – 好きな書籍(漫画も可)を1万円/年購入 12
  13. 13. 書籍購入支援制度 活用例 13
  14. 14. 本日のアジェンダ • Dockerを動かそう • Dockerコンテナのライフサイクル • Dockerの操作とトラブルシューティング 基礎の基礎 • Dockerのネットワーク • Dockerfileを書いてみる • Dockerを触ったことがない、という方向けです • ごく基本的な話しかしていません • バージョンアップして変更になったり、もっと色々な テクニックも存在しますが、よく分かってません 14
  15. 15. Dockerを動かそう 15
  16. 16. Dockerの特徴 • 1コンテナ1プロセスで動作する – 仮想マシンと比べてハイパーバイザーのオーバーヘッ ドが無いのでより高速 • ≒コンテナ内で1プロセス(1タスク)が動作する – サービスプロセスと並行で対話型シェルを動かすなど の考え方は基本的に無い(シングルタスク) – コンテナの中であれこれ動作させるのには向かない – WebアプリならWeb APサーバで1コンテナ、DBサーバ で1コンテナという感じ • Dockerイメージは(ルート)ファイルシステム – chrootを思い浮かべるとちょうどいい 16
  17. 17. 各方式の比較 ベアメタル(物理) 仮想マシン コンテナ 性能 最も速い I/Oが遅い 速い OS 1つだけ 複数種類を混在可 能 カーネルは1つだけ だが、ディストリ ビューションは混在 可能 リソース使用 システムで専有 メモリの無駄が多い OSカーネルは1つ で効率が良い 柔軟性 硬直的 非常に柔軟 単機能向け 主な用途 高速なDBなど 従来型の業務シス テム Webサービスのフロ ントエンド等、同一 のものを大量配備 する必要があるも の 17
  18. 18. Dockerをインストールする 1. CentOS 7.2をインストール 2. アップデートを行う – # yum update -y 3. Dockerパッケージをインストール – # yum install docker – Docker用ストレージ領域を設定後Dockerサービス を起動するので、この段階では起動しません 4. bridge-utilsパッケージも入れておきます – # yum install bridge-utils 18
  19. 19. Docker用ストレージ領域 • Docker用のストレージ領域をLVM領域に作成 – Thin Poolと呼ばれている – 設定しないとループバックデバイスが使用されるが非推奨 1. 未使用の/dev/sdbを用意する(仮想ディスク追加など) 2. /etc/sysconfig/docker-storage-setupに以下の2行を追 加 3. docker-storage-setupを実行する – # docker-storage-setup 19 DEVS=/dev/sdb VG=dokcer-vg
  20. 20. サービスの起動 1. dockerサービスを起動する – # systemctl start docker 2. システム起動時に自動起動するように有 効化しておく – # systemctl enable docker • Dockerサービスを停止すると、動作中のコ ンテナは停止します – 消えるわけではない 20
  21. 21. docker-storage-setup実行例 # docker-storage-setup 現在、誰もこのディスクを使っていないかを調べます... OK ディスク /dev/sdb: シリンダ数 8354、ヘッド数 255、63 セクタ/トラック sfdisk: /dev/sdb: 認識できないパーティション領域タイプ (略) デバイス ブート 始点 終点 #セクタ Id システム /dev/sdb1 2048 134217727 134215680 8e Linux LVM /dev/sdb2 0 - 0 0 空 /dev/sdb3 0 - 0 0 空 /dev/sdb4 0 - 0 0 空 (略) Physical volume "/dev/sdb1" successfully created Volume group "docker-vg" successfully created Rounding up size to full physical extent 68.00 MiB Logical volume "docker-poolmeta" created. Logical volume "docker-pool" created. WARNING: Converting logical volume docker-vg/docker-pool and docker-vg/docker-poolmeta to pool's data and metadata volumes. THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.) Converted docker-vg/docker-pool to thin pool. Logical volume "docker-pool" changed. 21
  22. 22. firewalldの止め方 • 後ほどDockerのネットワークについて調べる 際にfirewalldを止めておくと設定が見やすい 1. iptables-servicesパッケージをインストール – 最小構成だとインストールされない – # yum install iptables-services -y 2. systemdの設定を変更し、firewalldを停止・無 効化、iptablesを起動・有効化 – # systemctl stop firewalld – # systemctl disable firewalld – # systemctl start iptables – # systemctl enable iptables 22 参考
  23. 23. Dockerイメージをダウンロード 1. CentOSのDockerイメージを検索 – # docker search centos 2. CentOSのDockerイメージをダウンロード – # docker pull centos – 最新版(latest)がダウンロードされる 3. Dockerイメージを確認 – # docker images – 基本的にはIDで識別(同一IDに複数TAGも) 23
  24. 24. Dockerコンテナを実行(基本) 1. CentOSイメージでコンテナを実行 – # docker run -it centos /bin/bash – -i, --interactive=true|false – -t, --tty=true|false 2. 実行中のコンテナを確認 – ホスト側で実行(別ターミナルなど) – # docker ps -a – -a, --all=true|false – 一意のIDと名前が割り当てられる 24
  25. 25. Dockerコンテナ実行(応用) 1. コンテナ名を付ける – # docker run --name=名前 イメージ名 コマンド 2. シェルからコマンドを実行させる – # docker run イメージ名 /bin/bash -c "コマンド" – yumでパッケージをインストールしたり 3. より複雑な実行時処理を行いたい場合は Dockerfileを記述する(後述) – どこまで複雑にするかはケースバイケース? 25
  26. 26. Dockerコンテナのライフサイクル 26
  27. 27. イメージとコンテナの変移 27 centos ①コンテナとして実行(docker run) httpd ② # yum install httpd centos httpd ③コンテナをイメージ化(docker commit) ④イメージをコンテナ化 (docker run) centos
  28. 28. コンテナをイメージ化 1. コンテナにhttpdパッケージをインストール – # docker run --name=httpd centos /bin/bash -c "yum install httpd -y" 2. httpdコンテナをコミットしてイメージ化 – # docker commit httpd httpd_template 3. イメージを確認 – # docker images 28
  29. 29. 新たなイメージからコンテナ実行 1. コンテナでhttpdを実行し、コンテナのポート80 番をホストの8080番に紐付ける – # docker run -d -p 8080:80 --name=web1 httpd_template /usr/sbin/httpd -D FOREGROUND – -d, --detach=true|false 2. ポートが紐付いていることを確認 – # docker ps -a – # curl localhost:8080 29
  30. 30. ストレージの使用状況を確認 • lsblkコマンドでThin Poolにしていしたブロッ クデバイスを確認する 30 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e1627b55d10 httpd_template "/usr/sbin/httpd -D About a minute ago Up About a minute 0.0.0.0:8080->80/tcp web1 # lsblk /dev/sdb1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb1 8:17 0 64G 0 part ├─dokcer--vg-docker--pool_tmeta 253:3 0 68M 0 lvm │ └─dokcer--vg-docker--pool 253:5 0 38.4G 0 lvm │ └─docker-253:0-134477219-3e1627b55d102cd04dce24579088cd6ba44765047c1bb909669240cd2de268bc 253:6 0 10G 0 dm └─dokcer--vg-docker--pool_tdata 253:4 0 38.4G 0 lvm └─dokcer--vg-docker--pool 253:5 0 38.4G 0 lvm └─docker-253:0-134477219-3e1627b55d102cd04dce24579088cd6ba44765047c1bb909669240cd2de268bc 253:6 0 10G 0 dm
  31. 31. Dockerの操作と トラブルシューティング 基礎の基礎
  32. 32. 覚えておきたいコマンド • docker inspect コンテナ名 – 実行中のコンテナの情報を確認できる • docker stop/start/pause コンテナ名 – 実行中のコンテナを停止/再実行/一時停止 • docker attach コンテナ名 – 実行中のコンテナに接続(事前にstartが必要) • docker rm コンテナ名 – 停止中のコンテナをコンテナリストから削除 • docker rmi イメージ名 – イメージを削除 32
  33. 33. トラブルシューティング • 対話式シェルを実行して手動実行 – エラーで停止したコンテナでシェル実行し、ログなどを 確認できる – # docker exec -it コンテナ名 /bin/bash • dockerサービスを再起動してみる – # systemctl restart docker – 動作中のコンテナは停止してしまうのでstartが必要 • ネットワーク周りならiptablesを確認 – # iptables-save – firewalldが動いていると煩雑なので、iptablesに切り替 える方が良いかも 33
  34. 34. Dockerのネットワーク 34
  35. 35. Dockerのネットワーク構成図 35 Dockerコンテナ eth0 eth0 docker0 veth veth Dockerコンテナ eth0 仮想的に直結 ブリッジ接続 NAPT接続(IPマスカレードやポート転送) 外部
  36. 36. ホストのNIC周りの確認 [root@localhost ~]# ip addr show (略) 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:1c:42:1e:f2:ad brd ff:ff:ff:ff:ff:ff inet 172.16.6.246/16 brd 172.16.255.255 scope global dynamic eth0 valid_lft 2984sec preferred_lft 2984sec inet6 fe80::21c:42ff:fe1e:f2ad/64 scope link valid_lft forever preferred_lft forever 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff inet 172.17.42.1/16 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::5484:7aff:fefe:9799/64 scope link valid_lft forever preferred_lft forever 35: veth1f3e585: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master docker0 state UP qlen 1000 link/ether 92:d8:4a:6c:20:b2 brd ff:ff:ff:ff:ff:ff inet6 fe80::90d8:4aff:fe6c:20b2/64 scope link valid_lft forever preferred_lft forever [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces docker0 8000.56847afe9799 no veth1f3e585 36
  37. 37. iptables-saveの実行結果 *nat :PREROUTING ACCEPT [3251:517949] :INPUT ACCEPT [1495:211919] :OUTPUT ACCEPT [74:5868] :POSTROUTING ACCEPT [73:5828] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 172.17.0.11:80 COMMIT *filter :INPUT ACCEPT [3028:437371] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [92:8782] -A FORWARD -d 172.17.0.11/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT COMMIT 赤:コンテナが外部に出ていくための設定 青:コンテナへの接続設定 37 ※firewalldを止めています
  38. 38. Dockerfileを書いてみる 38
  39. 39. Dockerfileに書ける内容 命令 内容 FROM 元となるイメージ MAINTAINER Dockerfileの制作者 RUN docker build時にコマンド実行 ADD ファイル、ディレクトリの追加 COPY ファイル、ディレクトリの追加(URL指定不可・解凍不可 ) CMD コンテナ実行時にコマンド実行(実行時上書き可) ENTRYPOINT コンテナ実行時にコマンド実行(実行時上書き不可) WORKDIR 作業ディレクトリの指定 ENV 環境変数の指定 USER 実行ユーザの指定 EXPOSE ポートの紐付け VOLUME ボリュームのマウント39
  40. 40. Dockerfileの使用例(1) • Dockerfileを作成する – ENTRYPOINTでhttpdの起動を指定しているので、 docker run時にhttp起動の指定が不要 • docker buildでDockerイメージを作る – # docker build -t httpd_dockerfile . – 最後の「. 」はカレントディレクトリのDockerfileを参照す るために指定 40 FROM centos:latest MAINTAINER tmiyahar <miyahara@virtualtech.jp> RUN yum install httpd -y ENTRYPOINT /usr/sbin/httpd -D FOREGROUND ←.(ドット)を忘れずに
  41. 41. Dockerfileの使用例(2) • Dockerイメージが作成されたことを確認 – # docker images • Docker buildで作成したイメージでコンテナを 実行する – # docker run -d -p 8081:80 --name=web2 httpd_dockerfile – # curl localhost:8081 – ENTRYPOINTでhttpdの起動を指定しているので コンテナで実行するコマンドの指定は不要 41
  42. 42. まとめと課題 • CentOS 7初期の頃は不整合が多く(特にsystemd 廻り)扱いにくかったが、こなれてきたので一度 触ってみるにはいい塩梅 – httpdとか動かなかった(/var/runがtmpfsだから) • どこまでイメージを作り込み、どこからDockerfile等 で自動化するかの加減は? – 作り込みすぎるとメンテが大変 – 自動化部分が多いとデプロイに時間がかかる • DockerHubを使ったり、Gitと連動させたり • AtomicHostとかCoreOSとか • Kubernetesのような管理ツールは? 42
  43. 43. ありがとうございました 43

×