Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アプリ屋もDockerをドカドカ使おう
Search
Tasuku Hori
October 14, 2015
Technology
0
60
アプリ屋もDockerをドカドカ使おう
iSUC2015 発表資料(Docker ver 1.8 ベースでの内容)。
Tasuku Hori
October 14, 2015
Tweet
Share
More Decks by Tasuku Hori
See All by Tasuku Hori
誰でもAIエージェントが作れる開発環境 Dify/Llamaの紹介
coolerking
0
130
コード生成ツールの導入判断 のための評価方法の提案
coolerking
0
53
コード生成ツールGitHub Copilotは本当に効果があるのか~生成ツールの定量的評価方法~
coolerking
0
46
呪文開発~GPT3/4時代に発生した小さくて新しい作業『プロンプト・エンジニアリング』~
coolerking
0
190
Play with Kubernetes ~はじめにやること~
coolerking
1
540
国土地理院 基盤地図情報 ~GIS データの基本~
coolerking
0
1.2k
音声異常検知をためしてみよう ~身近な音声を録音して、音声異常検知モデルにかけてみよう
coolerking
0
240
富岳の使い方~富岳で機械学習~
coolerking
0
880
AI RCカー Kaigi On Line 2021 ライトニングトーク資料
coolerking
0
120
Other Decks in Technology
See All in Technology
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
180
C++26 エラー性動作
faithandbrave
2
700
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
180
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
.NET 9 のパフォーマンス改善
nenonaninu
0
770
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Building Your Own Lightsaber
phodgson
103
6.1k
What's in a price? How to price your products and services
michaelherold
243
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
A designer walks into a library…
pauljervisheath
204
24k
Gamification - CAS2011
davidbonilla
80
5.1k
Thoughts on Productivity
jonyablonski
67
4.4k
Automating Front-end Workflow
addyosmani
1366
200k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Transcript
アプリ屋も Dockerをドカドカ使おう 株式会社エクサ シニアITアーキテクト 堀 扶 www.facebook.com/hori.tasuku
自己紹介 • 神奈川のSIer所属 • アプリと基盤の間で働く、今年でSE22年目 • 現在の業務は、全社標準化と技術サポート • 開発プロセスおよび成果物の標準化 •
プロジェクト支援ツールの標準化 お客様開発環境 オフショア開発環境 自社内共通開発環境 自社内プロジェクト専用 開発環境 早く 安く 簡単に できるだけ多くのプロジェクトに 最近良く聞く、Dockerは使えないか.. はじめに © 2015 EXA CORPORATION 2
以下のサーバをDockerコンテナで試行 • Jenkins • Subversion上で所定名称でタグ付けされたソースをITサーバへ自動デプロイ • コンパイル&UT、SLOC計測、弊社独自の品質評価ツール適用も実行 • Subversion +
WebDAV • 構成管理サーバ • ソースコードだけでなく設計書などの文書も管理 • Redmine • バグトラッキングツール • プロジェクト内でWBSアクティビティ化されていない作業をチケットで管理 ちょうど Docker コンテナの基本的な起動方法を網羅 ① 公式イメージをそのままrun ② Dockerfileを使って build & run ③ 複数コンテナを一度に up 今回のセッションでこれらの手順を元に、Dockerの使い方を紹介します はじめに © 2015 EXA CORPORATION 3
目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run
• Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 4
Dockerとは • コンピュータリソースを切り分けて使うソフトウェアの一つ • Google社のサービスは全部コンテナらしい • Linuxのコンテナ技術(LXC)を使う • ユーザ空間のみ分離した環境のため従来の仮想化技術より効率的 •
コンテナをコマンドラインで操作可能 物理マシン カーネル空間 物理マシン ゲストOS ハイパバイザ 物理マシン カーネル空間 ユーザ空間 ユーザ空間 仮想マシン ホストOS + ハイパバイザ ユーザ空間 ユーザ空間 ユーザ空間 ゲストOS 仮想マシン ユーザ空間 ゲストOS 仮想マシン ユーザ空間 Docker化 仮想化 Dockerについて © 2015 EXA CORPORATION 5
仮想マシンとDockerコンテナの違い • OSのインストールから • 複数のプロセス動作可能 • フルイメージなら共有可 • イメージのコード化不可 •
複雑なNW構成も選択可能 • ホストOSはLinux以外も可 • OS導入済み状態から • 原則単一のプロセスのみ • 差分イメージの共有も可能 • イメージのコード化可能 • ホストマシンとのNATのみ • ホストOSは今のところLinuxの み 仮想マシン Dockerコンテナ Dockerについて © 2015 EXA CORPORATION 6 Dockerfile
Docker動作環境 2つの構成要素 • Dockerサーバ:Linux OSが動作するマシン • コンテナが実際に動作するサーバ • Dockerクライアント:Windows/Mac OSでも動作、サーバ上でもOK
• DockerコマンドによるDockerサーバ上のコンテナ操作 dockerコマンド によるコンテナ操作(CUI) Linux OS ユーザ空間 ユーザ空間 ユーザ空間 dockerデーモン Dockerfile 《Dockerクライアント》 《Dockerサーバ》 Docker Engine Dockerについて Docker Hub 公開イメージ 公式イメージ ローカル リポジトリ イメージ © 2015 EXA CORPORATION 7
Dockerコンテナ起動までの流れ Docker Hub Docker Hubからイメージを docker pull ローカル リポジトリ Dockerfileを使って
docker build 自分のイメージを docker push 公式イメー ジ 公開イメー ジ 公式イメー ジ 公開イメー ジ イメージ イメージ イメージ 公開イメー ジ Docker コンテ ナ Docker コンテ ナ Docker コンテ ナ 実行 docker run Docker コンテ ナ Docker コンテ ナ Dockerについて インターネット上で公 開したい場合のみ © 2015 EXA CORPORATION 8 Dockerfile Dockerfile
Docker Hub • インターネット上のサービス • GitHubのDocker版 • Dockerfile やビルドコンテンツ、イメージなどが格納されている •
GitHub Enterprise相当のサービスがDocker Trasted Registory(一部無料) • インターネットを使いたくない→Docker Registoryを構築、代替にする • Official: 公式イメージ • Docker社が管理しているイメージ • 使い方ドキュメントつき • Public: 公開イメージ • 個人で作成したコンテンツを公開可能 • 要アカウント取得(無料) Docker Hub Dockerについて 主な公開イメージ © 2015 EXA CORPORATION 9
docker コマンド • Dockerクライアントのコマンドラインから実行 • Getting Started [Windows/Mac/Linux] をまず読む •
書式:「docker <コマンド名> <引数1> <引数2>…」 主なコマンド 動作 pull Docker Hub/Docker Repogitoryからイメージをローカルリポジトリへダウンロード push ローカルイメージをDocker Hub/Docker Repositoryへアップロード build Dockerfileやビルドコンテンツをもとにイメージをビルドしローカルリポジトリへ格納 run イメージをコンテナとして実行 exec コンテナ上でコマンドを実行する login Docker Hubへログインする rmi ローカルリポジトリからイメージを削除する rm コンテナを削除する Dockerについて © 2015 EXA CORPORATION 10
ローカルリポジトリ • Docker Hubから取得したイメージをDockerサーバ上に一旦格納 • 格納されるイメージには必ず「イメージID」が付与される • 各イメージにのラベルをつけることができる • 形式:「<アカウント名>/<イメージ名>:<タグ名>」
• ローカルリポジトリ上のすべてのイメージ一覧表示→「docker images」 Dockerについて ローカル リポジトリ 要素 説明 アカウント名 Docker Hub上のユーザ名 イメージ名 イメージ対象が一発で分かる名前をつける タグ名 一般的にはバージョン番号(最新版は”latest”) $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE maryatdocker/docker-whale latest 7d9495d03763 5 minutes ago 273.7 MB docker-whale latest 7d9495d03763 2 hours ago 273.7 MB © 2015 EXA CORPORATION 11
目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run
• Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 12
Dockerコンテナ起動までの流れ Docker Hub Docker Hubからイメージを docker pull ローカル リポジト リ
Dockerfileを使って docker build 自分のイメージを docker push 公式イメージ 公開イメージ 公式イメージ 公開イメージ イメージ イメージ イメージ 公開イメージ Docker コンテ ナ Docker コンテ ナ Docker コンテ ナ 実行 docker run Docker コンテ ナ Docker コンテ ナ Dockerの使い方 インターネット上で公 開したい場合のみ ① 公式イメージをそのまま run ② Dockerfileを使って build & run ③ 複数コンテナを一度に up © 2015 EXA CORPORATION 13
① 公式イメージをそのままrun Jenkinsのように、起動するとすぐに使用可能となる公式イメージ もある 1. Docker Hub上の公式イメージサイトを読む Jenkins → https://hub.docker.com/_/jenkins/
2. How to useにしたがって実行する docker run --name myjenkins -p 8080:8080 -v /your/home:/var/jenkins_home jenkins ダウンロードしたイメージの名前を “myjenkins”とつける 左側の番号:Dockerサーバ外部ポート番号 右側の番号:コンテナ側のポート番号 左側のパス:Dockerサーバ上のマウント先パス 右側のパス:コンテナ側のパス(VOLUME指定してエクスポーズしている イメージの名前 公開イメージの場合アカウント名省略 タグ名省略時は”latest”が選択される Dockerの使い方 © 2015 EXA CORPORATION 14
Linux OS Docker コンテナ 《参考》DockerコンテナのNAT構成 © 2015 EXA CORPORATION 15
《Dockerサーバ》 eth0 docker0 veth0 172.17.0.2 Port:8080 192.168.10.101 192.168.10.0/16 docker run --name myjenkins -p 8080:8080 -v /your/home:/var/jenkins_home jenkins JenkinsサーバWebサイトを開くには http://192.168.10.101:8080/ へアクセスする Dockerの使い方 外からは、 あたかもくっついたかのように見える
② Dockerfileを使ってbuild&run Docker Hub上には、Subversionの公式イメージがない このような場合は、centosなどの公式イメージをカスタマイズ(build)して実行 (run)して希望のコンテナを実行する 1. ベースとなるイメージの決定 OSの種類とバージョンを決める 例)最新のCentOS
→ “centos:latest” 1. カスタマイズ手順を決める OSにrootでSSHしたあとのコマンドを記述する 2. Dockerfileに記述 Dockerクライアント上で記述したコマンドを所定の書式でDockerfile化 必要があればビルドコンテンツも用意 3. Dockerfile をビルド→作成したイメージはローカルリポジトリへ 4. 作成したイメージを実行 Dockerの使い方 © 2015 EXA CORPORATION 16
Dockerfile • DockerコンテナのMakefileのようなもの • Dockerfileに記述した順番にイメージ上で処理される • 最初の「FROM」を使って使用するイメージ名を記述 • 「RUN」コマンドを上から順番に実行 •
RUNを実行するごとにイメージが作成される • 最終行の「CMD」にデーモンプロセスをコマンドライン実行 • systemctlでの起動は失敗する • ビルドコンテンツ(ファイルやディレクトリ)をコンテナ上にCOPYや ADD • 外部のファイルをビルド時にコンテンツ上に取り込める • コマンドリファレンスはこちらを参照のこと Dockerの使い方 © 2015 EXA CORPORATION 17
Subversion: Dockerfile記述例 FROM centos:7 MAINTAINER "Tasuku Hori" <
[email protected]
> RUN echo
"proxy=http://proxy.server:9999" >> /etc/yum.conf && yum -y update && ¥ yum -y install subversion subversion-tools httpd mod_dav_svn net-tools tar gzip openssh-server && ¥ echo "## WebDAV" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo "Alias /svn /var/www/svn" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo "<Location /svn>" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " DAV svn" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " SVNParentPath /var/www/svn/" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " AuthType Basic" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " AuthName ¥"svn default repository¥"" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " AuthUserFile /etc/svn/svn-auth-users" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " AuthzSVNAccessFile /etc/svn/svn-authz-access" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo " Require valid-user" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ echo "</Location>" >> /etc/httpd/conf.modules.d/10-subversion.conf && ¥ mkdir -p /etc/svn && ¥ echo "[repo:/]" >> /etc/svn/svn-authz-access && ¥ echo "* =" >> /etc/svn/svn-authz-access && ¥ echo "admin = rw" >> /etc/svn/svn-authz-access && ¥ echo "[repo:/default]" >> /etc/svn/svn-authz-access && ¥ echo "tsukamoto = rw" >> /etc/svn/svn-authz-access && ¥ htpasswd -bcm /etc/svn/svn-auth-users admin admin && ¥ htpasswd -bm /etc/svn/svn-auth-users tsukamoto tsukamoto && ¥ mkdir -p /var/www/svn && cd /var/www/svn && ¥ svnadmin create repo && ¥ cd /var/www && chown -R apache:apache ./svn VOLUME ["/var/www/svn", "/etc/svn"] EXPOSE 80 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] 実行するプロセスを最後に記述する 実行時に-vや-pでDockerサーバ側に露出させることができる 実行時に-vや-pでDockerサーバ側に露出させることができる Dockerの使い方 ※本ファイルを実際に使用する場合は、at your own riskでお願いします © 2015 EXA CORPORATION 18 コマンドラインから インストールする手順を 上から順番に記述する
Redmine 実行環境の構成 • Ruby on Rails で記述されたWebアプリケーション • Redmineには以下のような複数のプロセスが必要 •
Webサーバ(Apache HTTP Server + passengerモジュール など) • RDBMS (mysql や PostgreSQLなど) • (オプション)memcached 物理マシン OS apache Passengerモジュール Redmine アプリケーション PostgreSQL memcached 《物理マシン構成例》 物理マシン カーネル空間 ユーザ空間 ユーザ空間 ユーザ空間 《Dockerサーバ構成例》 Dockerの使い方 複数のコンテナ で構成する必要 がある © 2015 EXA CORPORATION 19
公開イメージ使用時のリスク • 今回、公式イメージではなく公開イメージを使用した例を紹介 • 公開イメージは個人が作成したものである • 公式イメージがない場合に • 公式イメージがあっても最新バージョンが提供されていない場合に •
Redmine Officialには3.1.1はないが、sameersbn/redmineには3.1.1がある • イメージ概要やインストール方法はドキュメントを確認すること • 悪意ある公開者の可能性もある • 当然何か合った場合は各自でリスクをとらなくてはならない • Dockerはroot権限でコマンド実行を許可しているのと同等 • 気休めだが.. • イメージのみ公開している場合は避ける • 参照数の少ないもの、更新頻度の低いものも避ける Redmine3.1.1公開と同時に イメージも公開している.. Dockerの使い方 © 2015 EXA CORPORATION 20
③ 複数コンテナを一度にup • Docker Composeで複数のコンテナを一度に起動、停止できる • docker-compose コマンド(旧名fig) • docker-compose
up:起動、docker-compose stop:停止 • カレントディレクトリ上のdocker-compose.yml に従いコンテナ起動 • image: 使用するイメージ名を指定 • link:コンテナ間連携 • RedmineコンテナとPostgreSQLコンテナ • Redmineコンテナとmemcachedコンテナ • volume: Dockerサーバ上のディレクトリへマウント • PostgreSQLのデータディレクトリ • Redmineのデータディレクトリ(アップロードしたファイルの格納先) • docker-compose.ymlリファレンスはこちらを参考のこと Dockerの使い方 © 2015 EXA CORPORATION 21
Redmine: docker-compose.yml記述例 postgresql: image: sameersbn/postgresql:9.4 volumes: - /home/10001/postgresql/data:/var/lib/postgresql environment: -
DB_USER=redmine - DB_PASS=admin123 - DB_NAME=redmin memcached: image: sameersbn/memcached:latest redmine10001: image: sameersbn/redmine:3.1.1 links: - postgresql:postgresql - memcached:memcached volumes: - /var/run/docker.sock:/run/docker.sock - /usr/bin/docker:/bin/docker - /home/10001/redmine/data:/home/redmine/data environment: - DB_USER=redmine - DB_PASS=admin123 - DB_NAME=redmine - SMTP_HOST=smtp_server_fqdn - SMTP_PORT=25 ports: - "10001:80" Memcached コンテナ PostgreSQL コンテナ Redmine コンテナ Redmineデータ /home/redmine/data PostgreSQLデータ /var/lib/postgresq l link link volume volume ports Docker Hub 公開イメージ someershn/postgresql:9.4 公開イメージ someershn/memcached:latest 公開イメージ someershn/redmine:2.6.3 image image image /bin/docker /run/docker.sock volume volume ※本ファイルを実際に使用する場合は、at your own riskでお願いします Dockerの使い方 © 2015 EXA CORPORATION 22
Dockerイメージによる社内標準化推進 23 Docker Trusted Registory カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ
済みコンテナ PMOツール カスタマイズ 済みコンテナ テスト環境 カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ Public IaaS/PaaSへ 社内仮想環境/*Stackへ 余ったPCなどへ 標準化担当 Dockerの使い方 Docker Incの有料サービス 組織内ローカルのリポジトリ © 2015 EXA CORPORATION インターネット上にリポジトリがあると、 パブリック・クラウドからオンプレミスまでイメージを共有できる インストール後 閉鎖環境へ持ち込み オンプレのみであれば Docker Repository(OSS) で実現可能
目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run
• Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 24
おすすめ速習ルート • 市販ムック本「Dockerエキスパート養成読本」か「Docker実践入 門」を流し読み • 自分のPCに実行環境を作り、本のコマンドを試す • 自分でJenkins → Subversion
→ Redmine を立ててみる • 過去に作ったことのあるサーバがあればDockerで立ててみる • VOLUMEを使い、Dockerコンテナ上データのバックアップ方法を理解する • 実プロジェクトで使用するイメージを用意 • Docker Hub上の公式イメージドキュメントを読む&試す • できるだけDocker Hub資源を使い、Dockerfileはなるべく書かない! • 開発用PCに実行環境を入れて運用 © 2015 EXA CORPORATION 25 いっちょかみ ドカドカ ひととおり 書かなくてはならなくなったら基盤屋に依頼しよう! さいごに
Dockerを覚えるべき人 • やはり基盤技術者、システムアーキテクト • システムアーキテクチャを設計する人は必須 • ライフサイクルが短く、負荷見積が難しいシステム向き • Public IaaS/PaaSとの親和性は比較的高い
• コマンドベースなので自動スケール設計、実装しやすい • インストール手順、災害対策時などの退避や復旧手順の自動化 • オンプレミス環境からPublic Iaas/PaaSへのポータビリティの実現 • Public IaaSへ一般公開したくない独自イメージ提供→Docker Trusted Repositoryが必要? • ベースとなるGit/GitHubを使うスキルも必要 では、アプリ屋(アプリ開発者)は不要? さいごに © 2015 EXA CORPORATION 26
アプリ屋がDockerを使う • アプリ屋と基盤屋のすきま、いわゆる「グレーゾーン」 • 基盤屋にやってほしいが、結局アプリ屋がやっている作業 • Public PaaS環境なども入ってきそう • ステージング環境のうち実装、UT、IT前半あたり
• プロジェクト支援三種の神器(Subversion, Redmine, Jenkins) • これらの環境構築はDockerが得意 • 少ないリソースを効率よく使う • Dockerユーザに徹すれば、Dockerは便利なツール • Dockerfileやdocker-compose.ymlには手を出さない • どんなに便利なイメージがDocker Hubにあるかよく知っているとなお良い • スクリプト言語を使って便利なツールを作り、再利用する • PHP, Ruby on Rails, Python, JavaScript(HTML5/CSS3), Groovy.. さいごに © 2015 EXA CORPORATION 27
アプリ屋向き実行環境:Kitematic • Windows 7/8.x PCで動作するDocker GUI • 現時点ではWindows10では動作しない • 簡単インストール(Porxyなしの場合)
• 公式イメージをそのまま使用する場合はワンクリック起動 © 2015 EXA CORPORATION 28 t p s : / / w w w . y o u t u b e . c o m / w a t s : / / w w w . y o u t u b e . c o m / w a t c h Linux操作を知らないPMO向けツール ただし、Docker Hub上のドキュメントは読む必要あり さいごに
アプリ屋向き実行環境:CoreOS • 必要最小限の機能に絞ったDockerコンテナ実行環境(Linux) • クラスタリング(etcd)、分散システムツール(fleet) • Windows7 + VMwarePlayer +
CoreOS + Tera Term • インストールが比較的簡単 • Proxy環境でも動作 • PMOでもなんとか扱えそう.. © 2015 EXA CORPORATION 29 さいごに Ubuntu/CentOS/Fedora/RHEL.. Snappy Ubuntu Core Atom Project (CentOS/RedHat) Apache MESOS CoreOS以外のDocker実行環境 Poderosaだと 動作しない
物理マシン アプリ屋向き実行環境:Panamax/CoreOS • KitematicのWeb UI版 • DockerHub+Panamax独自テンプレ • 5つのコンテナ+クライアント •
小さいPCだとオーバヘッド大きい • 2vCPU2GBメモリだと半分のメモリを消費 • 簡単インストール • Proxy環境では動作しない? © 2015 EXA CORPORATION 30 CoreOS モニタリングUI NoSQL ワークフロー cAdvisor redis DRAY UI panamax-ui エージェント panamax-api ユーザの コンテナ ユーザの コンテナ ユーザの コンテナ Panamax クライアント panamaxの起動停止、状態確認等 コンテナ運用者 コンテナの設定、起動停止等 さいごに
PMOも技術を身につけよう! • PMO こそ Docker を覚えてほしい • いつまでも メール/Excel/Word/共有フォルダ だけ?
• プロジェクト管理にもITを積極活用しよう • ユーザ管理 → Active Directory / FreeIPA • 共有フォルダ → ownCloud / GitLab / Subversion + WebDAV • 課題、障害管理 → Trac / Redmine • 品質評価、生産性集計 → Jenkins+FindBugs/Checkstyle+SLOCCount,Redmine.. • コミュニケーション → Slack, Kandan, OpenMeetings.. • Webアプリ系スクリプト言語も覚えれば最強に • HTML5+CSS3、PHP、Ruby on Rails、Groovy + Public PaaS • 独自便利ツール量産も夢ではない © 2015 EXA CORPORATION 31 さいごに
あなたもDockerをドカドカ使ってみませんか? 本資料に記載の企業名称、製品名称は、米国および その他の国における各社の登録商標です。 © 2015 EXA CORPORATION 32
Docker1.8 構成 • Docker Engine • DockerデーモンとDockerコマンド(CUIクライアント)、Dockerの基本構成 • Docker Hub
• Docker社管理下のDockerイメージの利用や、個人作成イメージ公開が可能 • Docker Compose • 複数コンテナで構成されたアプリを構築する際に使用 • Kitematic • 単一のPC上でDockerコンテナをGUIで管理できる • Docker Trasted Registory • 旧名Docker Hub Enterprise、インターネット上にプライベートイメージを保管できる(有償、30日ト ライアルあり) • Docker Swarm • 複数のDocker実行ノードのクラスタリング(Docker1.8ではまだβ) • Docker Registory • ローカル環境にDocker イメージを保管できる(Docker1.6以降) 本日説明した範囲 参考 © 2015 EXA CORPORATION 33
The Docker1.5 User Guideの参考翻訳 • Dockerユーザガイドへようこそ • Docker Hubを使ってみよう •
“Hello world”アプリのDocker化 • コンテナの動作 • Dockerイメージの動作 • コンテナへのリンク • コンテナ内データの管理 • Docker Hubの動作 • Docker Compose • Docker Machine • Docker Swarm 左記リンクはすべて個人ブログ記事であり 翻訳内容も保証されているものではありません。 参照の際は、ご注意ください • リファレンス • Dockerfile • docker-compose.yml • インストール • CentOS上にVagrantなしでDockerを インストール • Docker Composeのインストール 参考 © 2015 EXA CORPORATION 34
学習用環境の構築 • Dockerサーバ用PCを用意できる場合は、CentOSやUbuntuをイン ストールし、Docker最新版をインストールする • 1台のPC上で学習する場合、Kitematicをインストールするか、 Virtualbox/VMware Workstation Player上にCentOSやUbuntuを入 れDockerサーバをインストールする
• 私見では、Proxy環境下の場合はCentOS/Ubuntu環境下でDockerサーバ をインストールするほうが楽 • Proxyなしでインターネット接続できる環境では、ほぼドキュメント通 りに実行すればOK 参考 © 2015 EXA CORPORATION 35
WindowsPC上にインストールする際の注意 • 2015/9/29時点ではWindows10未サポート • Proxy環境は検索し情報を集めながらすすめること(筆者未実行) • Virtualboxが未インストールの場合はインストールしておく • PCによってはBIOS設定変更(VT-x/AMD-x)が必要な場合あり •
Windows8はタスクマネージャで設定確認できるらしい • Windows7の場合は、Microsoft ® Hardware-Assisted Virtualization Detection Toolを ダウンロードし、実行しておく • Kinematic をダウンロードし、実行すると必要なソフトウェアがインス トールされる • Docker Quick Start ターミナルを実行すると、Virtualbox上にdefaultとい う名前の仮想マシンが導入、起動される(インストール完了) • インストール確認は docker run hello-world を実行する 参考 © 2015 EXA CORPORATION 36
Windows7上にKitematicをインストール • BIOS設定でIntel-VT/VT-Xオン • AMDには対応していないらしい(未確認) • 事前にVirtualbox最新版をインストール • Docker Toolboxサイトからインストーラをダウンロードし実行す
る • Docker Quick Start Terminal起動 • 成功したら、docker run hello-worldを実行し動作確認し、終了させる • 念のためPCを再起動し、Kitematicを起動 • 起動前Virtualbox上の仮想マシン”default”は落としたままにしておく © 2015 EXA CORPORATION 37 参考
CentOS 7上にインストールする際の注意 • CentOS 7 標準リポジトリ上のDockerバージョンは1.7 • Proxy環境下でインストールする場合は、/etc/sysconfig/docker に環境変数 HTTP_PROXY,
HTTPS_PROXY,NO_PROXYを指定する • 書籍「Docker実践入門」にインストール手順紹介あり • Docker公式サイト上は 1.8 をインストールする手順を紹介している • CentOS 7.0イメージを使っている場合は必ずyum upgradeすること • https://docs.docker.com/articles/systemd/ にproxy指定方法あり(docker デーモン起動前に実施すること) • Kitematicがうまく動作しない場合は、イロイロ調べるより、 VirtualboxやVMware Player上にCentOSをインストールしたほうが早 いかも.. 参考 © 2015 EXA CORPORATION 38
CoreOSをインストールする際の注意 • ISOイメージをCD-ROMに刺し起動した状態はLive実行状態 • coreos-installしないと実際にインストールされない • dockerコマンドを試すレベルなら、この状態でも可能 • 2015/10/06時点でリリースされているCoreOSについて •
PoderosaからSSH接続できないので、TeraTermなど他のターミナル接続 ソフトを使用すること • デフォルトでsshdが有効となっている • Kitematic使用した際、Virtualbox上にCoreOSが適用される © 2015 EXA CORPORATION 39 参考
Proxy環境下でCoreOSを使う • /usr/share/oem/run作成 #!/bin/bash systemctl set-environemt http_proxy=http://proxy.fqdn:port/ systemctl set-environemt https_proxy=http://proxy.fqdn:port/
• chmod a+x /usr/share/oem/run&&reboot しておく • ~/.curlrc 新規作成 proxy=http://proxy.fqdn:port/ • Gitコマンド実行(docker操作するユーザで) • git config global http.procxy http://proxy.fqdn:port/ • git config global http.procxy http://proxy.fqdn:port/ • ~/.bashrc (rootユーザor新規ユーザ) export http_proxy=http://proxy.fqdn:port/ export http_proxy=http://proxy.fqdn:port/ © 2015 EXA CORPORATION 40 参考
Jenkins公式イメージ使用時の注意 • 実行例 • mkdir /jenkins_home && chown 102:102 /jenkins_home
&& chmod a+rwx /jenkins_home • docker run -d -v /jenkins_home:/var/jenkins_home -p 8888:8080 -- name=jenkins jenkins:latest • docker stop Jenkins / docker start • バックアップは docker stop jenkinsしたあと/Jenkins_homeをコピー • リストアは /jenkins_homeを戻し、docker startもしくはdocker run • 実行例にある通り、ホスト側の露出先が102:102で読み書き可能 であること © 2015 EXA CORPORATION 41 参考
Subversion実行イメージ作成時の注意 • Dockerfileサンプルの注意 • 公式イメージはマイナーバージョンまでフル指定したほうが良い • リストア時にリビジョンNo復帰までしなくてよいなら、VOLUMEによる /var/www/svn露出をやめ、Subversionクライアントで定期的にチェッ クアウトしたデータを保管してもよい •
認証でKerberos+LDAPを使用したほうがパスワード管理しやすい © 2015 EXA CORPORATION 42 <Location /svn> DAV svn SVNParentPath /var/www/svn/ AuthType Kerberos AuthName “FreeIPA Login(Kerberos+LDAP)" KrbMethodNegotiate on KrbMethodK5Passwd on KrbServiceName HTTP KrbAuthRealms WEBPOT.LOCAL Krb5KeyTab /etc/httpd/conf/ipa.keytab KrbSaveCredentials on AuthLDAPUrl ldap://freeipa.fqdn/dc=XXXX,dc=YYYY?krbPrincipalName Require valid-user # ErrorDocument 401 /ipa/errors/unauthorized.html </Location> FreeIPA参照/etc/httpd/conf.modules.d/10-subversion.conf設定例 参考
Redmine公式イメージでコンテナ起動 • 以下のようなdocker-compose.ymlを書けばOK • 2015/10/06時点の公式イメージ最新バージョンは3.0.5 • 最新版は3.1.1 • README.mdにはmemcached対応については書いていなかった.. ©
2015 EXA CORPORATION 43 red_pgsql: image: postgres:9.4.4 environment: - POSTGRES_USER=redmine - POSTGRES_PASSWORD=secret - LANG=ja_JP.utf8 red: image: redmine:3.0.5 links: - red_pgsql:postgres volumes: - /redmine_files:/usr/src/redmine/files ports: - "8083:3000" 参考
Kubernetes • クーバァネィティス:舵取り役という意味らしい • 大量コンテナ管理、クラスタリング機能などを提供 • 複数コンテナをPodという単位で管理 • Pod単位で複製可能 •
ホストをまたいだ複数PodをMinionという単位で管理 • PodやMinion単位でネットワーク設定が可能 • コンテナでサービスを運用する人(基盤屋)向け • アプリ屋にはPanamaxのほうがあってそう.. • なので筆者はまだ試してません.. • Docker関連書籍によく紹介されている © 2015 EXA CORPORATION 44 参考
現在市販されている書籍 (1/2) • Docker実践入門(紙・Kindle) • バランスよく書かれており、最初に購入しても問題なく学習できる • 最も新しい書籍だがバージョンは1.7ベースなので1.8の情報はない • CentOS
yumパッケージ管理下のdockerを使用している • 外部ユーティリティ情報が少ない(KubernetesとAtomic Hostは記述あり) • Dockerエキスパート養成読本(紙・Kindle) • 雑誌記事を再編しただけのムックなので構成は良くないが、各記事が短いの で短気な人向け(いっちょかみ向け) • 情報は古いものも少なくないが、記述している範囲は広い • Dockerを支える技術(Kindle) • 日経Linux連載記事をまとめた書籍 • Linuxに関する技術的知識が必要、基盤技術者向けか • じっくり勉強したい人向け、私も買ったがまだ読みきっていません © 2015 EXA CORPORATION 45 参考 ※各著者の方々、スミマセン…
現在市販されている書籍 (2/2) • Dockerコンテナ実践検証(Kindle) • どこかの企業の技術検証部署が書いたレポートっぽい • よくかけてるけどすぐ古くなるからその前に電子書籍にしちゃえ..的なにおいが • 試行および私見が書かれているが手順などはほとんどない
• PanamaxやKuberbetesなどDocker Inc以外のツールなども網羅 • Docker入門~Immutable Infrastructureを実現する(Kindle) • 最初のDocker市販書籍、なので内容が古い • 私はお世話にはなったが、これから始める人はもっと新しい情報からの ほうがよい • イントロ部は基盤屋向け、コマンド操作はUbuntuベースで記述 © 2015 EXA CORPORATION 46 参考 ※各著者の方々、スミマセン…