アプリ屋もDockerをドカドカ使おう ~ Docker入門
-
Upload
hori-tasuku -
Category
Software
-
view
6.001 -
download
0
Transcript of アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋も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について
DockerHub
公開イメージ
公式イメージ
ローカルリポジトリ
イメージ
© 2015 EXA CORPORATION 7
Dockerコンテナ起動までの流れ
DockerHub
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: 公開イメージ• 個人で作成したコンテンツを公開可能
• 要アカウント取得(無料)
DockerHub
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」が付与される
• 各イメージにのラベルをつけることができる• 形式:「<アカウント名>/<イメージ名>:<タグ名>」
• ローカルリポジトリ上のすべてのイメージ一覧表示→「dockerimages」
Dockerについて
ローカルリポジトリ
要素 説明
アカウント名 Docker Hub上のユーザ名
イメージ名 イメージ対象が一発で分かる名前をつける
タグ名 一般的にはバージョン番号(最新版は”latest”)
$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEmaryatdocker/docker-whale latest 7d9495d03763 5 minutes ago 273.7 MBdocker-whale latest 7d9495d03763 2 hours ago 273.7 MB<none> <none> 5dac217f722c 5 hours ago 273.7 MB
© 2015 EXA CORPORATION 11
目次
• はじめに
• Dockerについて
• Dockerの使い方• 公式イメージをそのまま run
• Dockerfile を使って build & run
• 複数コンテナを一度に up
• さいごに
© 2015 EXA CORPORATION 12
Dockerコンテナ起動までの流れ
DockerHub
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 docker0veth0
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:7MAINTAINER "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 80CMD ["/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.4volumes:
- /home/10001/postgresql/data:/var/lib/postgresqlenvironment:
- DB_USER=redmine- DB_PASS=admin123- DB_NAME=redmin
memcached:image: sameersbn/memcached:latest
redmine10001:image: sameersbn/redmine:3.1.1links:- 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
DockerHub
公開イメージ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
DockerTrustedRegistory
カスタマイズ済みコンテナ
カスタマイズ済みコンテナ
カスタマイズ済みコンテナ
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
tps://www.youtube.com/watc
ps://www.youtube.com/watch?
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 CoreAtom 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/bashsystemctl 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 && chmoda+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 svnSVNParentPath /var/www/svn/AuthType KerberosAuthName “FreeIPA Login(Kerberos+LDAP)"KrbMethodNegotiate onKrbMethodK5Passwd onKrbServiceName HTTPKrbAuthRealms WEBPOT.LOCALKrb5KeyTab /etc/httpd/conf/ipa.keytabKrbSaveCredentials onAuthLDAPUrl ldap://freeipa.fqdn/dc=XXXX,dc=YYYY?krbPrincipalNameRequire 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.4environment:- POSTGRES_USER=redmine- POSTGRES_PASSWORD=secret- LANG=ja_JP.utf8
red:image: redmine:3.0.5links:- 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
参考
※各著者の方々、スミマセン…