11---
2- footer : CC BY-SA Licensed | Copyright (c) 2023 , Internet Initiative Japan Inc.
2+ footer : CC BY-SA Licensed | Copyright (c) 2024 , Internet Initiative Japan Inc.
33title : Dockerを触ってみよう
44description : Docker の概要を学び、コンテナ操作を体験します
55time : 1h
6- prior_knowledge : 仮想化、CUI 操作
6+ prior_knowledge : 仮想化、CUI 操作、Linux基本操作(推奨)
7+ updated : 2025-07
78---
89
910<header-table />
@@ -12,54 +13,63 @@ prior_knowledge: 仮想化、CUI 操作
1213
1314## はじめに
1415
15- Docker は、Docker, Incが開発しているコンテナ型の仮想環境プラットフォームです 。
16- コンテナとは仮想マシンのように1台のコンピュータの上で、仮想的に複数のアプリケーションを動作させる技術・仕組みの1つです 。
16+ Dockerは、当初 Docker Inc. によって開発され、現在は Mirantis を中心にコミュニティと共に保守・開発が続けられている、コンテナ型の仮想環境プラットフォームです 。
17+ コンテナとは、1台のコンピュータ上で複数のアプリケーションを分離して動かすための、軽量かつ高速な仮想化技術のひとつです 。
1718
18- Docker(コンテナ仮想化プラットフォーム)を使用すると、アプリケーションやその依存関係をコンテナと呼ばれる独立した環境にパッケージ化することができます。
19- では、コンテナと仮想マシンは何が異なるのでしょう?
19+ Dockerを利用することで、アプリケーションとその依存関係を「コンテナ」と呼ばれる独立した実行環境としてパッケージ化し、どこでも同じように動作させることができます。
2020
21- 一般的に、仮想マシンと呼ばれるソフトウェアでは、ホストOS上で仮想マシン用のソフトウェア(VirtualBox等)を動かすことでホストOSとは異なるOSを起動します。
22- 一方、コンテナによる仮想化は、ホストOS上にアプリケーション実行用の専用領域を作成し、その中で実行する仕組みとなっています。
21+ では、「コンテナ」と「仮想マシン」には、どのような違いがあるのでしょうか?
22+
23+ 従来の仮想マシンでは、ホストOS上に仮想化ソフトウェア(例:VirtualBox、VMwareなど)を動かし、その中でゲストOSを実行します。
24+ 一方、コンテナはホストOSのカーネルを共有しつつ、独立したユーザー空間を構築することで、軽量で高速な実行環境を提供します。
2325
2426### 本講義の目的
2527
26- - Dockerについて正しい基礎知識と理解を得る
27- - DockerFile および dockerコマンドを用いてdocker containerを作成・操作できるようにする
28+ - Dockerについての基礎的な知識と仕組みを理解する
29+ - Dockerfile および ` docker ` コマンドを使って、コンテナの作成・操作を体験する
2830
2931#### 本講義で扱わないこと
3032
31- - dockerコマンドのオプション・細かい操作に対する解説
32- - コンテナイメージレイヤーの細かい解説
33+ - ` docker ` コマンドのすべてのオプション解説
34+ - コンテナイメージのレイヤー構造などの詳細な内部仕様
3335
3436### 本講義の目標
3537
36- - dockerコマンドを利用してコンテナの取得 ・起動・停止ができるようになる
37- - DockerFileの読み方・書き方を知り、自分で作成もしくは加筆修正するなど、自分の目的に沿ったコンテナを作成できるようになる
38+ - ` docker ` コマンドを使って、コンテナの取得 ・起動・停止ができるようになる
39+ - Dockerfileの基本的な書き方・読み方を理解し、自分の目的に応じてコンテナを構築できるようになる
3840
3941### "Docker" とは
4042
41- ** はじめに** で Docker = コンテナ型仮想環境プラットフォーム、として説明しましたが、本講義で扱う"Docker"は、コンテナ仮想プラットフォームを扱う上での技術的な概念やコマンド等を示します。
43+ ここで扱う "Docker" とは、コンテナ仮想化プラットフォームおよびその周辺ツール群を指します。
44+
45+ 以下はDockerを扱う上で基本となる概念です。
46+
47+ - ** Docker コンテナ**
48+ アプリケーションとその実行環境をパッケージ化したもの。OSやハードウェアに依存せず、どこでも同じ動作を再現できます。
4249
43- 以下にDockerを扱う上で重要となる概念を記載します。
50+ - ** Docker イメージ**
51+ コンテナの元となるファイルシステムのテンプレート。アプリケーションとその依存ファイル、設定が含まれており、Dockerfileを用いて構築します。
4452
45- - Docker コンテナ
46- - Dockerは、アプリケーションとその依存関係をコンテナと呼ばれる軽量な仮想環境にパッケージ化します。コンテナは、ホストマシンとは独立して実行され、一貫した動作を提供します。コンテナはポータブルであり、異なる環境やプラットフォームで実行できます。
47- - Docker イメージ
48- - Dockerコンテナは、Dockerイメージから作成されます。イメージは、アプリケーションの実行に必要なすべての依存関係と設定を含むファイルシステムのスナップショットです。イメージは、** Dockerfile** と呼ばれるテキストファイルに定義され、ビルドコマンドを使用して作成されます。
53+ - ** コンテナオーケストレーション**
54+ 複数のコンテナを効率よく展開・管理する仕組み。シンプルな構成管理には ` docker compose ` を、より大規模なシステムには ` Kubernetes ` (k8s)がよく利用されます。
4955
50- - コンテナオーケストレーション
51- - Dockerは、コンテナのデプロイメントと管理を容易にするための機能を提供します。複数のコンテナを管理するためのツールとして、** Docker Compose** や** Kubernetes** (* )などがあります。これらのツールを使用すると、複雑なマルチコンテナ環境を構築し、スケーリングやロードバランシングなどの機能を実現することができます。
52- - イメージの共有
53- - Docker HubやDocker Registryなどのオンラインリポジトリを使用することで、Dockerイメージを共有および配布することができます。これにより、他の開発者との協力や、既存のイメージを再利用することが容易になります。
56+ ※ 本講義では ` docker compose ` (Docker Compose v2 以降)を前提とします。従来の ` docker-compose ` (v1)は非推奨です。
5457
55- 本講では主に仮想環境プラットフォームである「** Docker コンテナ** 」を中心に行いますが、一方で「** Docker イメージ** 」についても学び、自身にとって扱いやすい仮想環境プラットフォームを扱えることを目的と致します。
58+ - ** イメージの共有と配布**
59+ Docker Hub や GitHub Container Registry などのリポジトリを通じて、コンテナイメージを共有・再利用できます。
5660
57- 「** コンテナオーケストレーション** 」については続く docker-compose の項で扱います。
61+ - ** OCI (Open Container Initiative)**
62+ 現在、コンテナ技術は OCI により標準化されており、Dockerはその仕様に準拠した実装のひとつです。Podmanやcontainerdなども同様にOCI準拠です。
63+
64+ 本講義では「Dockerコンテナ」と「Dockerイメージ」の操作を中心に学習を進めていきます。
65+ 「コンテナオーケストレーション」については、後続の ` docker compose ` の講義で触れます。
5866
5967### 講義の進め方
6068
61- 本講義では、予めDockerがインストールされていることを前提としています。
62- Dockerのインストールが完了していない方は、「ハンズオン事前準備」を済ませてください。
69+ この講義は、Dockerがあらかじめインストールされている環境を前提としています。
70+ 未インストールの場合は、事前準備ガイド「ハンズオン事前準備」に従ってセットアップを済ませてください。
71+
72+ > 💡 注意:Docker Desktop は商用利用に制限があります。Linux では ` docker-ce ` や ` podman ` などの代替も検討してください。
6373
6474## Chapters
6575
@@ -71,20 +81,34 @@ Dockerのインストールが完了していない方は、「ハンズオン
7181## 参考
7282
7383### 仮想マシン vs コンテナ
74- 仮想マシンとコンテナ、どちらが優れており、どちらを使うべきなのでしょう?
7584
76- それは一概にどちらが優れているからそうすべき、といった類いの物ではありません。
77- コンテナは仮想マシンと比べて後発であるため、仮想マシンが抱えていた問題を解決しているのは確かですが、上位互換という事ではありません。
78- コンテナには仮想マシンには無いメリットもありますがデメリットもあります。
79- コンテナは仮想マシンと異なり、OS の中で別のOSを起動するという事が無いため、セットアップや起動時においてもOSに関わる処理を必要としない為、時間を大幅に短縮することが可能です。また、ハードウェアにアクセスする際もゲストOSを介することが無いため、オーバーヘッドが少なく高速な動作が期待できます。
85+ 仮想マシンとコンテナ、どちらが「優れている」というよりは、それぞれ用途や目的に応じた使い分けが重要です。
86+
87+ コンテナは、仮想マシンよりも軽量かつ高速な環境構築が可能であり、CI/CDやマイクロサービスアーキテクチャとの相性が良いのが特徴です。
88+ ただし、仮想マシンのように完全に分離された環境を必要とする場合は、VMの方が適していることもあります。
89+
90+ 例)
91+
92+ - コンテナ:Linux 上で Linux アプリケーションを高速起動したい
93+ - 仮想マシン:Linux 上で Windows アプリケーションを実行したい
94+
95+ ### Docker のアーキテクチャ
96+
97+ ![ Docker Image] ( https://docs.docker.com/get-started/images/docker-architecture.webp )
98+
99+ ### Docker Hubのレート制限について
100+
101+ Docker Hub には、匿名ユーザでのpull操作に対してレート制限(1時間に最大100回)が設けられています。大量にpullする場合は ` docker login ` を行うことで制限緩和されます。
80102
81- しかし、その一方で仮想マシンと比べてホストOSとの独立性が少ないため、ホストOSとアーキテクチャが大きく異なるコンテナを共存させることはできません。
103+ ### セキュリティの観点(発展)
82104
83- 例)Linux 上で Windows コンテナを起動・実行する
105+ 実務では、以下のセキュリティ対策が重要です:
84106
107+ - コンテナイメージの脆弱性スキャン:` trivy ` , ` dockle ` , ` Grype ` などのツール
108+ - Dockerfileでの ` USER ` 指定(root実行の回避)
85109
86- ### Docker のアーキテクチャ
110+ ### 発展:DockerとWebAssembly(WASM)
87111
88- ![ Docker Image ] ( https://docs.docker.com/guides/images/docker-architecture.webp )
112+ 近年は Docker が WebAssembly(WASM)との統合にも対応し始めており、軽量かつクロスプラットフォームな実行環境として注目されています。
89113
90- <credit-footer />
114+ <credit-footer />
0 commit comments