ITblog

Dockerについて

2018年10月09日

Dockerについての勉強メモです。

Dockerとは

Dockerとは、コンテナ型の仮想化環境を提供するオープンソースソフトウェア。

VMWare、Virtual boxをはじめとする、1台のコンピュータの中に複数のOSを導入する仮想化技術の1つとして注目されている。

Dockerの仮想化技術のポイントとしては、通常の仮想化ソフトウェアは、1台のOSの上に、ハイパーバイザーを使うことで複数のOSをインストールしていたが、DockerはOSの部分は複数の仮想環境で共有して利用し、その上に入っているライブラリやミドルウェアは仮想環境ごとに分けて利用する。
このため、仮想環境のOSのベース部分を共有しているためリソースに無駄がないため効率的である。
また、異なる環境を複数構築したり、コピー、削除したりする場合も他の仮想化技術と比べると効率的にできる。

一方で、1台にマシンで異なるOSを使用したい場合はDockerは適切な方法ではない。
同じOSの複数の環境を構築したい場合に向いている技術である。

なぜ仮想化技術が必要なのか?

目的として複数のOS(例えばWindowsPCとMac)を使用したいときに、仮想化技術がなければOSごとに複数のハードウェアマシンを購入する必要がある。

このため、複数のマシンを購入する必要があるため、価格が多くかかる。

物理的なスペースも多く必要がある。

一方で、仮想マシンを利用することで1台のマシンに複数のOSを入れることができ、利用者が切り替えることで1台のマシンで複数のOSを利用できる。

このため、2台購入する必要がないので価格、設置スペースまた電気代など節約できる。

仮想化技術は、1台のマシンの中にメモリやCPU、またはディスク容量などのリソースが多めにあって、1つの環境だけでは余っている場合に有効な技術である。

Dockerとはどのような場合に有効なのか

サーバ、あるいはローカル環境で、あるアプリケーションが動作する環境を構築しようとする場合、同じOSでDockerを使用していない場合、ライブラリの依存関係が発生し、環境が複雑になる場合があります。
DOckerを使ってそのアプリケーション専用の環境を構築することで、これらの依存関係は無視できます。

また、あるミドルウェアをバージョンアップした場合に、動作し直すようにその上にあるプログラムを全てチェック、修正をする必要があります。
この場合、Dockerを使ってミドルウェアのバージョンを環境ごとに分けることができます。

また、あるアプリケーションが動作する環境を構築しようとした場合、その環境構築作業だけでも手間がかかる場合がありますが、dockerを使えばイメージを利用することで簡単に環境構築をすることができます。

また、サーバ技術として、サーバ上に複数の役割を持ったサーバを構築したい場合にも向いています。

ポイント

様々なサーバ仮想化技術において、コンテナはOSに関する部分を複数のコンテナで共有しているため、サーバごとのOSのための領域が不要になるため、そのぶんサーバのリソースが有効に活用することができる他、設定の手間も省ける。

Dockerはどんな場合に向いていないか

Dockerは単一のOSの上での複数の環境を構築する技術なので、例えばMacOSとWindowsを1台のマシンに入れたいという場合は、VMWAREやVirtualBoxといったツールが向いています。

Dockerと競合する技術

環境構築でVirtual Box+Vagrantや、VMareと競合しています。

Dockerを使用する流れ

Dockerをインストール

Dockerの起動、自動起動設定

コマンド

docker image
ローカル環境のDockerイメージを確認できる

docker ps -a
ローカル環境のDockerコンテナ一覧の確認

docker run 公開されているコンテナ名
Docker Hubで公開されているコンテナをダウンロードしてコンテナを起動する

オプション:
-d コンテナをバックグランド実行
-name コンテナ名を指定
-p ホスト側ポート:コンテナ側ポート ホストとコンテナ間のポート設定

docker pull 公開されているコンテナ名
公開されているDockerイメージをローカル環境にダウンロードする

docker rm コンテナ名
docker rm コンテナid
起動したコンテナを削除する

docker rmi コンテナ名
docker rmi コンテナid
起動したコンテナをローカル環境のイメージごと削除する

docker stop コンテナ名
コンテナを停止する

Docker Compose

Dockerの管理を楽にするツール。

導入することで、コンテナの設定をymlファイルにまとめることができ、コンテナの起動や停止を複雑なコマンドでなくシンプルに使用できる。

普通にコンテナを起動する場合は、コマンドラインがオプションで長くなって複雑になるが、長い部分をymlファイルに移るのでそのぶんコマンド実行がシンプルになる。

公開されているDockerイメージを使うことも、自分自身でイメージをビルドすることもできる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です