事前知識
コンテナ技術の特徴
ホストOS上に論理的な区画(コンテナ)を作り、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどを一つにまとめ、あたかも個別のサーバのように扱うことができるようにしたもの。
アプリケーションに必要なモジュールをコンテナとしてまとめられる。
- 複数のコンテナ組み合わせて一つのアプリケーションを構成するマイクロサービス型のアプリケーションと親和性が高いのが特徴です。
Dockerの概要
アプリケーションの実行に必要な環境を一つのイメージにまとめ、そのイメージを使って、様々な環境でアプリケーション実行環境を構築/運用するためのオープンソースプラットフォーム。
内部でコンテナ技術を使っている。
Dockerの基本的な機能
- 1.Dockerイメージを作る(Build)
- 2.Dockerイメージを共有する機能(Ship)
- 3.Dockerイメージを動かす機能(Run)
1.Dockerイメージを作る(Build)
Dockerイメージとは
Dockerイメージの作り方は大きく二つ
- Dockerコマンドを使って手動で作る
- Dockerfikeという設定ファイルを作ってそれをもとに自動でイメージを作る(推奨)
2.Dockerイメージを共有する機能(Ship)
- DockerイメージはDockerレジストリで共有できる。
- 公式のDockerレジストリはDockerHub
- UbuntuやCentOSなどのLinuxディストリビューションなどの基本的な機能を提供するベースイメージが配布されている。
- Dockerコマンドを使うと、DockerHubにログインして、レジストリ上のイメージの検索のアップロード/ダウンロードができます。
- 公式のDockerレジストリはDockerHub
3.Dockerイメージを動かす機能(Run)
- Dockerイメージさえあれば、Dockerがインストールされた環境であればどこでもコンテナを動かすことができる。
- Dockerイメージから複数のコンテナを起動することもできる。
コンテナの起動、停止、破棄はdockerコマンドを使います。
-
- コンテナ内で動作するプロセスを1つのグループとして管理し、グループごとにそれぞれファイルシステムやホスト名/ネットワークなどを割り当てています。
- グループが異なればプロセスやファイルへのアクセスができません。
Dockerを使用してアプリ開発をする際の必要手順
- 必要なツールをインストールする(初回のみ)
- 初期設定を実施する(初回のみ)
- Dockerイメージを作る(アプリケーションごと)
- Dockerを起動する(PC起動ごと)
- PC起動時のスタートアップに登録することが可能)
- Dockerコンテナを動かす(開発する際に1回)
- アプリケーションを開発する (開発実施)
- Dockerコンテナを停止する
私のDockerに対する認識のまとめ
可搬性
実行環境としての可搬性を提供する
- Dockerがインストール可能な環境であれば、Dockerで作成したアプリケーションを実行可能である
開発環境(クライアントOS)としての可搬性を提供する
- Dockerがインストール可能な環境であれば、Dockerがインストールされた実行環境で動作するアプリケーションを開発することが可能である
起動の高速化
- OS自体はホストマシンの資源(起動済みOS)を活用するので、仮想環境(コンテナ)起動時の時間的なオーバーヘッドを短くすることができる。
- すでに動いているOS上でプロセスを実行するのとほぼ同じ速さ。
参考文献
以下の本を読みながら、Dockerの勉強を開始しました。