【どこでも同じ環境で開発を】Dockerざっくりまとめ ①Dockerとは

プログラミング
LINEで送る
Pocket

はじめに

現在、Dockerというサービスについて勉強しています。
Udemyかめさんという方の「米国AI開発者がゼロから教えるDocker講座」という講座を受講しました。
とてもわかりやすい講座でしたが、動画教材のみでした。テキストを見返した方がわかりやすいと思いましたので、自分なりのとてもざっくりしたまとめを作成しようと思います。

Dockerとは

Linuxで動く仮想環境。コンテナ型の仮想化を行うことで、ハイパーバイザ型の仮想化と比べると軽量で、環境の持ち運びが可能になる
後述するDocker fileやDocker imageを活用することで、サーバなど自分のローカルとホストが変わっても、同じ環境を作ることができる

Dockerコンテナ

  • 仮想化環境そのもの。
  • Docker imageをもとに作成。(逆にDocker imageの更新も可能)
  • 同時に複数作成することが可能。
  • Docker imageによって起動するOSやインストールするアプリケーション、オプションが変わる。
    • 例えばUbuntuにAnacondaをインストールして、Jupyter Notebookを実行する。など

Docker image

  • Dockerコンテナを作るための元になるもの。
  • Docker Hubにも保存されており、そこから取得したDocker imageからコンテナを作ることも可能。
  • 複数のレイヤーから構成されており、レイヤーの数はDocker fileの内容で変化する。レイヤーを利用することでキャッシュができ、余計なリソースの消費を軽減する。

Docker file

  • .txtファイルであるDocker imageの設計図。記載する書式はDockerfile リファレンスに詳しく書かれている。
  • Docker fileを書き換えてビルドすることでDocker imageおよびDockerコンテナの中身が変わる。
  • Docker Hubから取得できるDocker imageを元に記載することも可能で、自分に必要なアプリケーションのみダウンロードしたり、設定をいじったりすることが可能。

つまり…

  • Docker Hubに目的に応じて不足ないDocker imageがあるなら、それを利用してコンテナを作成。
  • 不足がある場合や、細やかなオプション設定が必要な場合はDocker fileを作成し、そこからDocker imageを立ち上げ、コンテナを作る。(これができると自由度が上がるため、Docker Fileの記法を知ることは超重要!)
  • 関係性は下図参照
    Docker関係図
    ↑この図はPlantUMLで作成しました。

とりあえず今回はここまでです。次回の内容はDockerコマンドについて。
んー、まとめてみて改めてDocker自体の理解がなかなか難しいなあと感じますね。

LINEで送る
Pocket

コメント

タイトルとURLをコピーしました