Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アプリ屋もDockerをドカドカ使おう

 アプリ屋もDockerをドカドカ使おう

iSUC2015 発表資料(Docker ver 1.8 ベースでの内容)。

Tasuku Hori

October 14, 2015
Tweet

More Decks by Tasuku Hori

Other Decks in Technology

Transcript

  1. 自己紹介 • 神奈川のSIer所属 • アプリと基盤の間で働く、今年でSE22年目 • 現在の業務は、全社標準化と技術サポート • 開発プロセスおよび成果物の標準化 •

    プロジェクト支援ツールの標準化 お客様開発環境 オフショア開発環境 自社内共通開発環境 自社内プロジェクト専用 開発環境 早く 安く 簡単に できるだけ多くのプロジェクトに 最近良く聞く、Dockerは使えないか.. はじめに © 2015 EXA CORPORATION 2
  2. 以下のサーバをDockerコンテナで試行 • Jenkins • Subversion上で所定名称でタグ付けされたソースをITサーバへ自動デプロイ • コンパイル&UT、SLOC計測、弊社独自の品質評価ツール適用も実行 • Subversion +

    WebDAV • 構成管理サーバ • ソースコードだけでなく設計書などの文書も管理 • Redmine • バグトラッキングツール • プロジェクト内でWBSアクティビティ化されていない作業をチケットで管理 ちょうど Docker コンテナの基本的な起動方法を網羅 ① 公式イメージをそのままrun ② Dockerfileを使って build & run ③ 複数コンテナを一度に up 今回のセッションでこれらの手順を元に、Dockerの使い方を紹介します はじめに © 2015 EXA CORPORATION 3
  3. 目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run

    • Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 4
  4. Dockerとは • コンピュータリソースを切り分けて使うソフトウェアの一つ • Google社のサービスは全部コンテナらしい • Linuxのコンテナ技術(LXC)を使う • ユーザ空間のみ分離した環境のため従来の仮想化技術より効率的 •

    コンテナをコマンドラインで操作可能 物理マシン カーネル空間 物理マシン ゲストOS ハイパバイザ 物理マシン カーネル空間 ユーザ空間 ユーザ空間 仮想マシン ホストOS + ハイパバイザ ユーザ空間 ユーザ空間 ユーザ空間 ゲストOS 仮想マシン ユーザ空間 ゲストOS 仮想マシン ユーザ空間 Docker化 仮想化 Dockerについて © 2015 EXA CORPORATION 5
  5. 仮想マシンとDockerコンテナの違い • OSのインストールから • 複数のプロセス動作可能 • フルイメージなら共有可 • イメージのコード化不可 •

    複雑なNW構成も選択可能 • ホストOSはLinux以外も可 • OS導入済み状態から • 原則単一のプロセスのみ • 差分イメージの共有も可能 • イメージのコード化可能 • ホストマシンとのNATのみ • ホストOSは今のところLinuxの み 仮想マシン Dockerコンテナ Dockerについて © 2015 EXA CORPORATION 6 Dockerfile
  6. 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
  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
  8. Docker Hub • インターネット上のサービス • GitHubのDocker版 • Dockerfile やビルドコンテンツ、イメージなどが格納されている •

    GitHub Enterprise相当のサービスがDocker Trasted Registory(一部無料) • インターネットを使いたくない→Docker Registoryを構築、代替にする • Official: 公式イメージ • Docker社が管理しているイメージ • 使い方ドキュメントつき • Public: 公開イメージ • 個人で作成したコンテンツを公開可能 • 要アカウント取得(無料) Docker Hub Dockerについて 主な公開イメージ © 2015 EXA CORPORATION 9
  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
  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
  11. 目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run

    • Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 12
  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
  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
  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の使い方 外からは、 あたかもくっついたかのように見える
  15. ② 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
  16. Dockerfile • DockerコンテナのMakefileのようなもの • Dockerfileに記述した順番にイメージ上で処理される • 最初の「FROM」を使って使用するイメージ名を記述 • 「RUN」コマンドを上から順番に実行 •

    RUNを実行するごとにイメージが作成される • 最終行の「CMD」にデーモンプロセスをコマンドライン実行 • systemctlでの起動は失敗する • ビルドコンテンツ(ファイルやディレクトリ)をコンテナ上にCOPYや ADD • 外部のファイルをビルド時にコンテンツ上に取り込める • コマンドリファレンスはこちらを参照のこと Dockerの使い方 © 2015 EXA CORPORATION 17
  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 コマンドラインから インストールする手順を 上から順番に記述する
  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
  19. 公開イメージ使用時のリスク • 今回、公式イメージではなく公開イメージを使用した例を紹介 • 公開イメージは個人が作成したものである • 公式イメージがない場合に • 公式イメージがあっても最新バージョンが提供されていない場合に •

    Redmine Officialには3.1.1はないが、sameersbn/redmineには3.1.1がある • イメージ概要やインストール方法はドキュメントを確認すること • 悪意ある公開者の可能性もある • 当然何か合った場合は各自でリスクをとらなくてはならない • Dockerはroot権限でコマンド実行を許可しているのと同等 • 気休めだが.. • イメージのみ公開している場合は避ける • 参照数の少ないもの、更新頻度の低いものも避ける Redmine3.1.1公開と同時に イメージも公開している.. Dockerの使い方 © 2015 EXA CORPORATION 20
  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
  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
  22. Dockerイメージによる社内標準化推進 23 Docker Trusted Registory カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ

    済みコンテナ PMOツール カスタマイズ 済みコンテナ テスト環境 カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ カスタマイズ 済みコンテナ Public IaaS/PaaSへ 社内仮想環境/*Stackへ 余ったPCなどへ 標準化担当 Dockerの使い方 Docker Incの有料サービス 組織内ローカルのリポジトリ © 2015 EXA CORPORATION インターネット上にリポジトリがあると、 パブリック・クラウドからオンプレミスまでイメージを共有できる インストール後 閉鎖環境へ持ち込み オンプレのみであれば Docker Repository(OSS) で実現可能
  23. 目次 • はじめに • Dockerについて • Dockerの使い方 • 公式イメージをそのまま run

    • Dockerfile を使って build & run • 複数コンテナを一度に up • さいごに © 2015 EXA CORPORATION 24
  24. おすすめ速習ルート • 市販ムック本「Dockerエキスパート養成読本」か「Docker実践入 門」を流し読み • 自分のPCに実行環境を作り、本のコマンドを試す • 自分でJenkins → Subversion

    → Redmine を立ててみる • 過去に作ったことのあるサーバがあればDockerで立ててみる • VOLUMEを使い、Dockerコンテナ上データのバックアップ方法を理解する • 実プロジェクトで使用するイメージを用意 • Docker Hub上の公式イメージドキュメントを読む&試す • できるだけDocker Hub資源を使い、Dockerfileはなるべく書かない! • 開発用PCに実行環境を入れて運用 © 2015 EXA CORPORATION 25 いっちょかみ ドカドカ ひととおり 書かなくてはならなくなったら基盤屋に依頼しよう! さいごに
  25. Dockerを覚えるべき人 • やはり基盤技術者、システムアーキテクト • システムアーキテクチャを設計する人は必須 • ライフサイクルが短く、負荷見積が難しいシステム向き • Public IaaS/PaaSとの親和性は比較的高い

    • コマンドベースなので自動スケール設計、実装しやすい • インストール手順、災害対策時などの退避や復旧手順の自動化 • オンプレミス環境からPublic Iaas/PaaSへのポータビリティの実現 • Public IaaSへ一般公開したくない独自イメージ提供→Docker Trusted Repositoryが必要? • ベースとなるGit/GitHubを使うスキルも必要 では、アプリ屋(アプリ開発者)は不要? さいごに © 2015 EXA CORPORATION 26
  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
  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上のドキュメントは読む必要あり さいごに
  28. アプリ屋向き実行環境: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だと 動作しない
  29. 物理マシン アプリ屋向き実行環境: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の起動停止、状態確認等 コンテナ運用者 コンテナの設定、起動停止等 さいごに
  30. 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 さいごに
  31. 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
  32. 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
  33. 学習用環境の構築 • 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
  34. 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
  35. 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 参考
  36. 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
  37. CoreOSをインストールする際の注意 • ISOイメージをCD-ROMに刺し起動した状態はLive実行状態 • coreos-installしないと実際にインストールされない • dockerコマンドを試すレベルなら、この状態でも可能 • 2015/10/06時点でリリースされているCoreOSについて •

    PoderosaからSSH接続できないので、TeraTermなど他のターミナル接続 ソフトを使用すること • デフォルトでsshdが有効となっている • Kitematic使用した際、Virtualbox上にCoreOSが適用される © 2015 EXA CORPORATION 39 参考
  38. 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 参考
  39. 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 参考
  40. 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設定例 参考
  41. 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" 参考
  42. Kubernetes • クーバァネィティス:舵取り役という意味らしい • 大量コンテナ管理、クラスタリング機能などを提供 • 複数コンテナをPodという単位で管理 • Pod単位で複製可能 •

    ホストをまたいだ複数PodをMinionという単位で管理 • PodやMinion単位でネットワーク設定が可能 • コンテナでサービスを運用する人(基盤屋)向け • アプリ屋にはPanamaxのほうがあってそう.. • なので筆者はまだ試してません.. • Docker関連書籍によく紹介されている © 2015 EXA CORPORATION 44 参考
  43. 現在市販されている書籍 (1/2) • Docker実践入門(紙・Kindle) • バランスよく書かれており、最初に購入しても問題なく学習できる • 最も新しい書籍だがバージョンは1.7ベースなので1.8の情報はない • CentOS

    yumパッケージ管理下のdockerを使用している • 外部ユーティリティ情報が少ない(KubernetesとAtomic Hostは記述あり) • Dockerエキスパート養成読本(紙・Kindle) • 雑誌記事を再編しただけのムックなので構成は良くないが、各記事が短いの で短気な人向け(いっちょかみ向け) • 情報は古いものも少なくないが、記述している範囲は広い • Dockerを支える技術(Kindle) • 日経Linux連載記事をまとめた書籍 • Linuxに関する技術的知識が必要、基盤技術者向けか • じっくり勉強したい人向け、私も買ったがまだ読みきっていません © 2015 EXA CORPORATION 45 参考 ※各著者の方々、スミマセン…
  44. 現在市販されている書籍 (2/2) • Dockerコンテナ実践検証(Kindle) • どこかの企業の技術検証部署が書いたレポートっぽい • よくかけてるけどすぐ古くなるからその前に電子書籍にしちゃえ..的なにおいが • 試行および私見が書かれているが手順などはほとんどない

    • PanamaxやKuberbetesなどDocker Inc以外のツールなども網羅 • Docker入門~Immutable Infrastructureを実現する(Kindle) • 最初のDocker市販書籍、なので内容が古い • 私はお世話にはなったが、これから始める人はもっと新しい情報からの ほうがよい • イントロ部は基盤屋向け、コマンド操作はUbuntuベースで記述 © 2015 EXA CORPORATION 46 参考 ※各著者の方々、スミマセン…