DockerとKubernetesの学習パス
近年ではクラウドネイティブ技術への注目が高まっています。その中でも、Dockerなどのコンテナ仮想化技術とKubernetesなどのコンテナオーケストレーション技術は人気の技術になりました。
1. Linux
DockerやKubernetesの環境として採用されるOSはLinuxがほとんどです。Dockerを理解するためにはまずLinuxの知識が必要です。
Linuxの知識を体系的に学習するためには、LPICの資格試験取得が最適です。インフラ領域のエンジニアとして、LPICレベル1は必須、レベル2まで学習すると望ましいです。
技術:
- Linux OSのインストール方法
- Linuxの基本的な操作
- 様々なコマンドの使用
- アプリケーションのビルドやインストール
書籍:
資格:
LPICの受験については、Avintonの技術ブログを一読することをおススメします!学習方法や難しかったところなど、さまざまなアドバイスが書いてあります。
- [LPIC Level 1試験](https://avinton.com/blog/2017/12/lpic-study/
- LPIC Level 2試験
2. ネットワークの基礎
コンテナ間の通信を理解するために、ネットワークの基礎知識が必要です。
CCNAは基本的なネットワークの知識を学習するのに最適です。ただし、Ciscoルーターの操作のためのコマンドなどを暗記する必要はありません。ネットワーク技術の基礎理論に注目して学習すると良いです。
技術:
- TCP/IP
- ルーティング
- ポートフォワーディング
- HTTPS
- DNS
書籍:
資格:
3. Docker
Dockerの学習はまず手元の環境構築から行いましょう。docker
コマンドをたくさん打つことが一番の学習です。その後は、Dockerの公式のチュートリアルに従って、基礎を学びましょう。また、いくつかのサンプルアプリケーションの構築を通して、Dockerの実用的な使い方を学びます。
動画で学習したい場合は、UdemyコースもDockerを体系的に学習できるのでおすすめです。
オンライン教材:
- Avinton Academy – Dockerのセットアップ
- 公式 – Dockerの基礎
- Avinton Academy – Dockerコンテナイメージの最適化
- Avinton Academy – Docker Composeでのアプリケーション構築
- 公式 – Docker チュートリアルラボ
Udemy:
4. Kubernetes
Kubernetesの学習にはこれまでに学んだ、Linuxやネットワーク、Dockerなどの知識が求められます。minikubeを使って、手元でKubernetesを触れる環境を構築しましょう。その後は、公式のチュートリアルに従って基本的な概念を学習します。ある程度、基本を理解出来たらいくつかのサンプルアプリケーションをデプロイして、実際の使い方を学びます。また、公式のチュートリアルには、アプリケーション開発者からシステム管理者向けまで、様々な場面におけるトレーニングが用意されています。
入門レベルの書籍としては、オライリー出版から出ている”Kubernetes Up and Running”がおすすめです。(2024年6月時点では英語版の第3版が最新です。)
オンライン教材:
- 公式 – minikubeのセットアップ
- 公式 – Kubernetesの基本
- Avinton Academy – Kubernetes上へのWebアプリケーションのデプロイ
- Avinton Academy – Kubernetes上へのAIアプリケーションのデプロイ
- 公式 – Kubernetesチュートリアル
書籍:
5. 応用編
実用的なレベルまでDockerやKubernetesを使いこなすためには、さらに以下の学習リソースをお勧めします。
5.1 Docker
まず、The Twelve-Factor Appでは、モダンなアプリケーションを構築する際に重要なポイントを列挙しています。これらの概念はクラウドネイティブな領域で働く場合には必須の知識です。
また、ベストプラクティスを読むと、アプリケーションを構築する際にどのような点に気を付けるべきかを学ぶことができます。
- Best practices for writing Dockerfiles – Docker公式チュートリアル
- Image-building best practices – Docker公式チュートリアル
- Docker development best practices – Docker公式チュートリアル
- コンテナ構築のおすすめの方法 – Google
5.2 Kubernetes
Kubernetesを実際のプロジェクトで使用できるレベルに到達するために必要な知識は”Production Kubernetes”という書籍がおすすめです。
また、CKAD、CKA、CKSなどの資格試験を受験すると、さらに高度な知識を体系的に学び、さまざまな場面で自分のKubernetesの技能を証明できます。
書籍:
資格(難易度順):
6. その他のクラウドネイティブ技術
さらにDockerやKubernetesを活用するためには、実際のプロジェクトで使用される実用的な応用技術を学ぶ必要があります。
パブリッククラウド
DockerやKubernetesはAWSやAzureなどのパブリッククラウド上で運用することも多いです。各種パブリッククラウドの資格を取得することで、DockerやKubernetesの実用的な運用方法を学ぶことができます。
さまざまなクラウドネイティブ技術
Kubernetes上で運用する様々なクラウドネイティブ技術が存在します。以下のコンポーネントはどのようなクラスターにも一般的に必要なサービスです。各プロジェクトで実際に使用する技術は異なりますが、それぞれの代表的なサービス名も列挙します。
- Kubernetes アプリケーション マネージャ: Helm
- 可観測性
- モニタリング: Prometheus, Grafana, Alertmanager
- ロギング: Elasticsearch, Kibana, FluentBit
- トレーシング: Jaeger
- ストレージ: Ceph
- コンテナイメージレジストリ: Harbor
- CI/CD: Argo
- サービスメッシュ: Istio, Linkerd
- Ingress: Nginx
- IaC(Infrastructure as Code) : Terraform
まとめ
DockerやKubernetesなどのクラウドネイティブ技術はここ数年で非常に注目されている技術です。一方で概念や仕組みは複雑で、学習コストも高く、技術トレンドの変化のスピードも非常に速いです。
Kubernetesやクラウドネイティブ技術のエンジニアへの需要は非常に高く、Linuxの基礎からしっかりと着実に学んでいくことで、プラットフォームエンジニア、インフラエンジニアとしてのキャリアは非常に安定します。紹介した学習リソースをもとに、ぜひともインフラエンジニア、プラットフォームエンジニアとしてのキャリアが実ることを祈っています。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?