読者です 読者をやめる 読者になる 読者になる

paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

paizaの中の人による2016年のDocker本『Docker実戦活用ガイド』が本日発売!

f:id:paiza:20160523110234j:plain

f:id:paiza:20151217152725j:plainこんにちは、吉岡(@)です。

paizaでは、軽量コンテナ環境Dockerを使った独自のオンラインジャッジシステムを構築し、エンジニアの転職スキルチェックサービスやプログラミング学習などで利用しています。 月間200万以上のDockerコンテナを作っており、Docker利用事例としては屈指の規模です。

本日より、このpaiza開発で培ったDockerやオンラインジャッジシステムのノウハウを詰め込んだ書籍『Docker実戦活用ガイド』(マイナビ出版)を出版します!
Docker純正ツールが出揃った2016年唯一の本格的Docker書籍出版となります!

Docker実戦活用ガイド

Docker実戦活用ガイド

Docker実戦活用ガイド

内容

Dockerは、軽量・高速なコンテナ環境・仮想Linux環境で、まさに一瞬で起動できることが特徴です。 Dockerイメージ・コンテナ・レジストリといった概念を使い、シンプルで使い易いツールにまとまっています。 アプリケーションのデプロイが大きな用途になりますが、paizaのオンラインジャッジシステムのような様々な用途で応用できます。

「Docker実戦活用ガイド」では、Dockerの概念を理解し自由につかいこなせて応用できるように、Dockerのインストール方法・基本的な使い方から応用・内部動作まで、具体例を交えて紹介しています。 さらにはオンラインジャッジシステムの作り方を通じたウェブサービスへの応用例や、paizaでの構築・運用事例や注意点も紹介しています。

簡単にはじめられるようにWindowsMac環境でのインストール方法を含み、Docker Machine/Docker Swarm/Docker Composeによるクラスタ環境も紹介しています。 また、最近のDocker for Mac、Kitematic、Docker Cloud、ユーザネームスペース、fork爆弾対策についても触れています。 このように、今年、2016年に出揃ったDocker純正ツールを用いて説明することで、簡単に使えるようになっています。

本書でわかること

本書を読むと、以下のことがわかるようになります。

  • Dockerの概念・仕組み・使い方
    概念や仕組みを理解した上でDockerを使えるようになります。
    Dockerは、明確なコンセプトをシンプルに実現しています。 基本をしっかり理解することで、簡単に使え、応用もできるようになります。

  • Windows, Mac環境でのインストール・使い方
    本書全体を通してWindows, Mac環境も想定しており、別のLinuxサーバを用意しなくても すぐにDockerを学ぶことができます。
    本書では、Docker Toolbox, Docker for Macでのインストール方法、Ubuntuへのインストール方法について説明しています。

  • Docker純正の関連ツール・サービス
    本書全体で、Docker純正のツールを使っています。
    Docker純正のツールは、環境設定、互換性や流行の影響が少なく開発も活発なためです。 本書で取り上げているツール・サービスは、Docker Toolbox, Docker for Mac, Docker Machine, Docker Swarm, Docker Compose, Docker Cloud, Docker Hubなどです。

  • 最新のDockerについての情報
    今月中旬の情報を元に書いていますので、最新のDockerの機能やDocker関連ツール を学ぶことができます。
    Docker1.11の最新機能、Docker for Macや、Docker Cloudについても説明しています。

  • クラスタ環境の構築
    Dockerでサーバ環境を実運用するにはクラスタ環境がかかせません。
    Docker Machine / Docker Swarm / Docker Compose により複数のDockerホスト(ノード) によるクラスタ環境を構築し、アプリケーションをデプロイできるようになります。

  • リソース管理
    全体を通して、特にリソース管理について詳しく解説しています。
    ハイパースレッディング環境での注意点や、ユーザネームスペース、fork爆弾対策にも触れています。

  • ウェブアプリケーションでの利用例
    実際にウェブアプリケーションを構築してDocker環境で実行する具体的な方法を 説明しています。

  • オンラインジャッジシステムの仕組み、作り方、運用事例
    本書はオンラインジャッジスステムについて解説している唯一の書籍になると思います。
    月間200万コンテナのDocker環境の構築・運用経験を元に解説しています。

章立て

本書は13章からなります。

1.Dockerとは?
2.Dockerの仕組み
3.Dockerのインストール(Windows, Mac, Linux)
4.Dockerを使ってみよう(コマンド編)
5.Dockerを使ってみよう(Kitematic(GUI)編)
6.Dockerイメージの操作
7.Dockerを使いこなす
8.複数のDockerを使う(Docker Machine, Docker Swarm, Docker Compose)
9.Dockerをクラウドで使う(Docker Cloud)
10.DockerとJavaScriptウェブサービスを作る(簡易オンラインジャッジシステム)
11.Dockerを利用した実運用ウェブサービス構築事例(paizaオンラインジャッジシステム)
12.paizaの実行環境APIを使いウェブサービスを作る(簡易オンラインジャッジシステム)
13.Dockerの内部

各章の概要は以下のとおりです。

1章 - Dockerとは?

Dockerとは何か、コンセプト、背景、仮想マシンとの違いを含めて紹介します。

2章 - Dockerの仕組み

Dockerがどのように動作するのか、コンテナ・イメージ・Docker Hub(レジストリ)の関係や、コンテナの仕組みとLinuxの機能(chroot名前空間、cgroups)を通じて紹介します。

3章 - Dockerのインストール

MacWindowsLinuxでのDockerのインストール方法を紹介します。Docker for Mac(ベータ版)も取り上げます。

4章 - Dockerを使ってみよう(コマンド編)

コマンドでの基本的なDockerの使い方を紹介します。コンテナの実行・終了といった一通りの操作を行えるようになります。

5章 - Dockerを使ってみよう(Kitematic(GUI)編)

マウス操作で簡単にDockerを使えるGUIクライアント(Kitematic)の使い方を紹介します。

6章 - Dockerイメージの操作

Dockerの特徴であるDockerイメージの操作について紹介します。イメージのDocker Hub(レジストリ)からのダウンロード、コンテナからのイメージ作成方法、Dockerfileに記述した構築手順からのイメージ自動作成、イメージのDocker Hub(レジストリ)へのアップロードについて取り上げます。

7章 - Dockerを使いこなす

本格的にDockerを使うために、様々なコンテナの作成・実行の方法、Dockerホストとコンテナ間でのファイルの共有(マウント)・コピーの方法、Dockerが提供する柔軟なリソース制限方法について紹介します。ユーザ名前空間(ネームスペース)やfork爆弾対策についても取り上げます。

8章 - 複数のDockerを使う(Docker Machine, Docker Swarm, Docker Compose)

Dockerが提供するツール群を使い、複数のDockerホストでクラスタを構築する方法や、アプリケーションをクラスタにデプロイする方法を紹介します。

9章 - Dockerをクラウドで使う(Docker Cloud)

Dockerが提供するウェブサービス(Docker Cloud)を使い、ブラウザ上でDockerクラスタを構築しアプリケーションをデプロイする方法を紹介します。

10章 - DockerとJavaScriptウェブサービスを作る(簡易オンラインジャッジシステム)

DockerとJavaScript(ブラウザ、Node.js)を使い、実際にウェブサービスを作ってみます。例として、任意のコードを実行する簡易オンラインジャッジシステムを取り上げます。

11章 - Dockerを利用した実運用ウェブサービス構築事例(paizaオンラインジャッジシステム)

Dockerを利用したウェブサービスの構築・運用事例として、月間200万以上のコンテナを作成・実行しているpaizaオンラインジャッジシステムの内部を紹介します。 ハイパースレッディングなどリソース制御の注意点も取り上げます。

12章 - paizaの実行環境APIを使いウェブサービスを作る(簡易オンラインジャッジシステム)

10章で作成したウェブサービス(簡易オンラインジャッジシステム)を、今度は11章で紹介したpaizaの実行環境APIを使うことで、サーバ環境を用意せずに作ってみます。

13章 - Dockerの内部

Dockerディレクトリの構造や、Dockerが設定するcgroups・名前空間の内容を紹介します。コンテナの設定を実行中に変更する方法についても取り上げます。

目次

目次は以下のとおりです。

1章 Dockerとは
 1.1 Dockerって何?
 1.2 コンテナと仮想マシン
 1.3 Dockerの歴史
 1.4 Dockerのコンセプト
 1.5 まとめ
 コラム: DockerとGo言語

2章 Dockerのしくみ
 2.1 Dockerの構成
 2.2 コンテナのファイルシステム空間(chroot)
 2.3 ファイルシステムの階層化
 2.4 コンテナのリソース制御
 2.5 コンテナの隔離(名前空間・ネームスペース)
 2.6 まとめ

3章 Dockerのインストール
 3.1 パソコン(Mac, Windows)でDockerを使う
 3.2 インストーラの構成
 3.3 Macでのインストール
 3.4 Windowにインストール
 3.5 Linuxでのインストール(Ubuntu)
 3.6 まとめ

4章 Dockerを使ってみよう(コマンド編)
 4.1 Hello Worldを動かす
 4.2 Linux(Ubuntu)を動かす
 4.3 ウェブサーバを動かす
 4.4 WordPressを動かす
 4.5 コンテナの終了・削除
 4.6 その他のDockerイメージ
 4.7 まとめ
 コラム: 100人乗っても大丈夫?

5章 Dockerを使ってみよう(Kitematic(GUI)編)
 5.1 Kitematicを使ってみよう
 5.2 まとめ

6章 Dockerイメージの操作
 6.1 Dockerイメージとは
 6.2 Dockerイメージのダウンロード
 6.3 コンテナからのDockerイメージ作成
 6.4 Dockerfileからのイメージ作成
 6.5 アプリケーションのDockerイメージ作成
 6.6 DockerイメージをDocker Hubへアップロード
 6.7 まとめ
 コラム: マシンコンテナ v.s. アプリケーションコンテナ

7章 Dockerを使いこなす
 7.1 コンテナの作成・実行
 7.2 コンテナをバックグラウンドで実行
 7.3 コンテナの削除
 7.4 コンテナでシェルを実行
 7.5 コンテナをホスト名を指定して実行
 7.6 コンテナのデタッチ・アタッチ
 7.7 実行中のコンテナにシェルで入る
 7.8 コンテナの一時停止・再開
 7.9 コンテナの実行ユーザを指定
 7.10 コンテナの作業ディレクトリを指定
 7.11 コンテナにホストのファイル・ディレクトリをマウント
 7.12 コンテナでulimitによるリソース制限
 7.13 コンテナのCPU制限
 7.14 コンテナのメモリ使用量制限
 7.15 コンテナのプロセス数の制限(fork爆弾対策)
 7.16 コンテナとDockerホスト間でのファイルコピー
 7.17 コンテナのログ(出力)の確認
 7.18 ユーザネームスペースの利用
 7.19 まとめ

8章 複数のDockerを使う(Docker Machine, Docker Swarm, Docker Compose)
 8.1 複数のDockerホストを管理するためのツール
 8.2 Docker Machine
 8.3 Docker Swarm
 8.4 Docker Compose
 8.4 まとめ

9章 Dockerをクラウドで使う(Docker Cloud)
 9.1 Docker Cloudとは
 9.2 Docker Cloudのアカウント作成
 9.3 クラウドサービスとのリンク
 9.4 Dockerホストの作成
 9.5 スタックの作成
 9.6 まとめ

10章 DockerとJavaScriptでウェブサービスを作る(簡易オンラインジャッジシステム)
 10.1 オンラインジャッジシステムとは
 10.2 オンラインジャッジシステムの6つの条件
 10.3 簡易オンラインジャッジシステム構築
 10.4簡易オンラインジャッジシステムを使ってみる
 10.5 簡易オンラインジャッジシステムの課題
 10.6 まとめ
 コラム: アイソモーフィックJavaScript

11章 Dockerを利用した実運用ウェブサービス構築事例(paizaオンラインジャッジシステム)
 11.1 Dockerとpaiza
 11.2 CPUのリソース管理
 11.3 メモリ使用量の制限
 11.4 プロセス数の制限
 11.5 ディスク使用量の制限
 11.6 Dockerイメージ読み込みの高速化
 11.7 コンパイル結果の再利用
 11.8 負荷分散・冗長化
 11.9 優先度制御
 11.10 まとめ

12章 paizaの実行環境APIを使いウェブサービスを作る(簡易オンラインジャッジシステム)
 12.1 実行環境API
 12.2 プロジェクトの作成
 12.3 ブラウザでのコード実行時の処理の作成
 12.4 サービスを動かす
 12.5 まとめ

13章 Dockerの内部
 13.1 Dockerディレクトリ
 13.2 cgroups
 13.3 ネームスペース
 13.4 まとめ

スペック

名称: Docker実戦活用ガイド 発売日: 2016年05月30日 価格: 3,326円 著作者名: 吉岡恒夫 監修者名: paiza 出版社: マイナビ出版 サイズ: B5変型判 ページ数: 256ページ ISBN-10: 4839959234 ISBN-13: 978-4839959234

本文

本書の本文の一部を紹介します。

目次です。

f:id:paiza:20160526104145p:plain f:id:paiza:20160526104205p:plain f:id:paiza:20160526104223p:plain

コンテナと仮想マシンの違いについて、たとえや例を使いながら説明しています。

f:id:paiza:20160526104237p:plain

コンテナの仕組みについて、図を使いながら説明しています。

f:id:paiza:20160526104248p:plain

Windows, Mac環境でのインストール方法を、画面を見せながら説明しています。(Docker Toolbox(Windows, Mac), Docker for Mac(Mac)を使います)

f:id:paiza:20160526104259p:plain

はじめてDockerに触れる人でもわかりやすいように、Dockerの使い方を例をあげながら丁寧に説明しています。

f:id:paiza:20160526104312p:plain

マウス操作でDockerを使えるツール(Kitematic)の使い方も取り上げます。

f:id:paiza:20160526104326p:plain

リソース管理について詳しく説明しています。

f:id:paiza:20160526104342p:plain

最近導入されたユーザ名前空間についても取り上げます。

f:id:paiza:20160526104354p:plain

Docker Machine, Docker Swarm, Docker Composeを用いたクラスタ環境の仕組み・構築・利用方法を図と例を使いながら説明します。

f:id:paiza:20160526104408p:plain

最近サービスがはじまった、ブラウザ操作でクラウド(AWS等)にDockerクラスタを構築・操作できるDocker Cloudについても取り上げます。

f:id:paiza:20160526104419p:plain

Dockerを使ったウェブサービスの例としてオンラインジャッジシステムを取り上げ、作り方や実運用の注意点などを説明します。

f:id:paiza:20160526104431p:plain

JavaScript(ブラウザ, Node.js)を用いて、Dockerを使ったウェブサービス(オンラインジャッジシステム)を作って動かします。

f:id:paiza:20160526104442p:plain

厳密なリソース管理での注意点として、ハイパースレッディングを考慮したCPUリソース管理について説明しています。

f:id:paiza:20160526104452p:plain

Dockerディレクトリの構成など内部動作についても説明しています。

f:id:paiza:20160526104505p:plain

まとめ

Dockerは聞いたことはあるけど使ったことはない方、触れてはいるけど2016年の発展したDockerの全貌を知りたい方、 ウェブサービスの開発・構築に関わる方、オンラインジャッジシステムに興味がある方など、2016年の今、基礎から本格的にDockerを学び活用したい方に向けた、Dockerの魅力を余すことなく書いた一冊ですので是非手にとってみてください。

Docker実戦活用ガイド

Docker実戦活用ガイド

Docker実戦活用ガイド




paizaではITエンジニアとしてのスキルレベル測定(9言語に対応)や、プログラミング問題による学習コンテンツ(paiza Learning)を提供(こちらは21言語に対応)しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp




プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編