Honmushi blog
2019/02/07

【実践技術書】Docker

ソフトウェア開発の中でのDockerの使用方法を学べます。開発・テスト・デプロイなど実際に開発で利用する内容を経験できます。スケールアウトについてやセキュリティなどの知識も身につきます。ただし結構難易度が高いです。インフラやネットワーク等の基礎知識が必要になります。

以前紹介した【実践技術書】プログラマのためのDocker教科書よりも応用的な内容になっています。実際の開発現場でどうやって活用するのかなどの知識が身につきます。

概要

1部では基礎的な概念の説明から操作方法を学びます。2部では開発の中でのDockerの使用方法を学びます。3部では高度なツールやテクニックの紹介です。

  1. コンテナとは何か

    1部です。概念の理解が目標です。

    Dockerの歴史的なところから、プラグインなどに至るまで知ることができます。幅広い知識が必要になるので、基礎の理解については【実践技術書】プログラマのためのDocker教科書で紹介している本を参考にするのがおすすめです。

  2. インストール

    基本的にはLinux環境へのインストールを紹介しています。参考程度にですが、WindowsとMacへのインストール方法もあるので参考にしてみてください。

  3. はじめの一歩

    Docker runとかbuildなどの基礎的なコマンドを試します。

  4. Dockerの基礎

    Dockerの概念の解説です。イメージの概念に加えて、SwarmやMachineなど周辺技術を踏まえて解説します。基礎的なコマンドの意味の解説をします。

  5. 開発でのDocker利用

    ここから2部です。開発での利用方法を学びます。

  6. Webアプリケーションの作成

    pythonをつかって簡単なHTMLページを作成します。

  7. イメージの配布

    Docker Hubを利用してイメージを配布します。一人でやっているとよくわからないかもしれませんが、チームなどで開発する場合重要です。

  8. 継続的インテグレーションとテスト

    スケジューラであるJenkinsを利用してCIを行います。内容が複雑になってきますが、CIを取り入れることができれば安全に開発ができます。重要視されるので頑張って理解したいです。

  9. コンテナのデプロイ

    実働環境でのDockerの利用についてです。コンテナのホスティングサービスの説明もしているので試すこともできます。ただし、簡単なアプリケーションであればそこまでしなくていいと思います。したほうが後々便利なのは間違いないと思いますが。この辺は特に難しいです。

  10. ロギングとモニタリング

    ログの収集や設定方法やツールをつかったモニタリングの解説です。実働環境での運用を考えるのであれば必須の知識だと思います。

  11. ネットワーキングとサービスディスカバリ

    ここから3部です。応用的なツールやテクニックの紹介です。ネットワークやインフレ的な知識が必要になるのでかなり難易度が高いです。

    ネットワークとの連携や適切なサービスへのアクセスなどの設定方法を学びます。参考になるツールの紹介もあり参考になります。

  12. オーケストレーション、クラスタリング

    Kubernetesなどをつかってコンテナオーケストレーションを行います。

    クラスタリングとは、ホストをグループ化してネットワークで接続します。外からは単一のリソースのように見せます。

    オーケストレーションとは、様々な作業を取りまとめて、適切にコンテナ郡を起動、操作します。

  13. セキュリティ

    Dockerを利用するに当たって考慮すべきセキュリティ問題を取り上げます。起こりそうな問題の例と、対応すべき防御について書かれており、実際にサービスに適応する場合は参考にしたほうがいいです。

特長

序盤はDockerの使い方で簡単なのですが、段々と難しくなってきます。実際の開発で用いる場合は様々なややこしいことがあります。わからないところ、うまく行かないところは飛ばしながらでも一通りやってみるといいです。終盤は難しいので飛ばしておいて、必要になったら確認するくらいがおすすめです。

開発段階の利用方法から実装・運用段階での利用まで書かれており、本格的にDockerを利用するのであれば読んでおいたほうがいいです。正しい概念を理解できていないことで、推奨されない利用方法をしてしまったりすると、せっかくのDockerの良い点が活かせません。セキュリティ関連の内容もあるので、大変参考になります。

おわりに

開発環境は、大抵はすでに動いているものに混ぜてもらう場合が多いです。詳しい人に解決してもらうことになります。ただ、基礎的な部分や触りの部分だけでも知っておく、またはやったことがあるとかなりスムーズに理解できます。

開発環境にDockerなどの仮想環境やCIなどが整備されていない場合は、頑張って理解して取り入れたほうがいいです。かなり快適で安全になります。

実働環境についてはDockerを採用することは思ったよりも難しそうです。合ったほうが便利そうですが、考慮することも多く余計に複雑になりそうです。簡単なWebサービスであれば、コストと相談して利用しないという選択のほうが多いのかなと思います。

  • このエントリーをはてなブックマークに追加
HOMEPROFILEPRIVACY POLICY