初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【docker】docker概要について

こんにちは!

udemyのセールの際にdockerの動画を購入しました。

pyhtonスタートアップののdockerイメージをあげただけですが、今回はdockerの概要について備忘録(自分用のまとめ)をします。

 

■Dockerとは

Dockerはコンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのコンテナ型仮想化ソフト

 

■仮想化とは

1台の物理マシン上に仮想マシンを用いて複数のOSを立ち上げること

 

■従来の仮想化との違い

ハイパーバイザ型仮想サーバと比較してみます。

①ハイパーバイザ型仮想化

1台のホストマシンに、仮想化管理ソフトを入れて複数の仮想化ゲストOSを入れます。(ホスト:WindowsにゲストOS:Linuxを入れて必要な環境設定から全て行うイメージ)

そのため動作が遅くなります。

f:id:mocomo012:20200315095706p:plain

ハイパーバイザ型

 

 

②コンテナ型仮想化(docker)

1台のホストマシンに複数コンテナが入ります。コンテナにはOSはありません。

コンテナのプログラムの実行はホストマシンが行います。

Linux以外の環境では動作しません。Windows使用の場合は仮想Linuxサーバを作成してその上で使用することができます。

コンテナ「Docker hub」にDockerイメージがありますので、そこから入れたいDockerイメージを追加します。

動作が軽量で、イメージを追加するだけで環境が整うため楽です。また、イメージを自分で編集して使用することも可能です。

f:id:mocomo012:20200315153058p:plain

コンテナ型(docker)

・dockerイメージ

例えばOSやrailsをインストールしようとするとOSのイメージ・railsのイメージをビルドします。

  

・ベースとなるイメージを「ベースイメージ」という

何も継承していない起点となるdockerイメージのことです。

「Docker hub」にはUbnutu,CentOSなどのOSイメージからOracleDatabase,MysqlなどのDBやWEBサーバ、pythonなどの基になるイメージが配布されています。

 

・追加していったイメージは「レイヤ」という

最初はOSイメージからインストールしていき、必要なイメージを追加していきます。OS・WEBサーバ・DBなどレイヤを追加していきます。

レイヤを追加していき、自分用のコンテナを作成できればそれをイメージとして自身のDockerHubにアップロードし、次回から同じイメージを使用できます。

 

また、元から必要なイメージがセットになったイメージも配布されています。

参考

https://blog.codecamp.jp/programming-docker-image-container

 

・ビルド(build)

Dockerファイルを使ってDockerイメージを構築する方法

 

・Dockerfile

Docker上で行うコマンドをまとめて記述し、実行することができます。

Dockerfileの情報を基にしてdocker buildでDockerイメージを作成します

 

※用語集

http://docs.docker.jp/glossary.html#build 

 

 

まだまだ未熟ですが間違いありましたらご指摘くださいませ🙇‍♀️

コマンドなどは複雑で多いため、習得したら追記していきます😦

 

 

参考にさせていただきました

https://kitsune.blog/docker-summary

https://knowledge.sakura.ad.jp/13265/

コマンドラインも参考にさせていただいています

「自宅ではじめるDocker入門―人気のコンテナ型「仮想化ソフト」を使ってみる!」