見出し画像

Dockerをゼロから学ぶ: 初心者向け基本ガイド

現代の仕事においては、開発者やネットワークエンジニアを問わず、Dockerを理解していないと話が進まない場面が増えてきています。「Docker」という言葉を耳にする機会は多いですが、具体的に何なのか疑問に思っている方も多いのではないでしょうか。

同じような疑問をお持ちの方のために、私が学んだ内容をもとにDockerの基本やその利点について整理してみました。少しでも参考になれば幸いです。

本記事は、「仕組みと使い方がわかる Docker & Kubernetes のきほんのきほん」という書籍を参考にして作成されています。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
小笠原種高 (著)

amazon.co.jp

🔲Dockerって何?

「Dockerって何ですか?」と質問されたら、色々なこと(コンテナ技術や、コンテナの軽さや起動の速さなど)が思い浮かぶかもしれませんが、一言で言うと、Dockerはプロセス(=アプリケーション)を分離する技術です。まずは、このポイントだけ覚えておけば十分だと思います。

🔲コンテナとは?

Dockerの「コンテナ」という言葉は、物流業界で使われるコンテナに由来しています。物流業界におけるコンテナのメリットには、以下の点があります。
・世界共通の規格でサイズが統一されているため、貨物がバラバラになることがない
・サイズが決まっているため、貨物列車や船への積み下ろしが簡単
・貨物を安全で安定的に、そして効率よく輸送できる

Dockerにおけるコンテナについて、考えてみると、以下の特徴があります。
・コンテナは基盤となるOS(Windows、MacOS、Linuxなど)に依存しない
・コンテナの持ち運びが簡単
・構築・起動が早い

🔲コンテナとDocker Engine

・Dockerコンテナを作成したり、動かしたりするためには、Dockerソフトウェア(Docker Engine)をインストールする必要があります。
・コンテナは、イメージ(=リポジトリ)から作成されます。(※逆に、コンテナからイメージを作成することも可能です)

🔲Docker の仕組み

・Dockerは、基本的にLinux OS上で動作します。
・土台のOS(ホストOS)も、コンテナ内の OSっぽいものも Linux OSである必要があります。

・先述した「Linux OSっぽいもの」について考える前に、そもそもOS(Operating System)とは…?何かを見てみましょう。
OS(Operating System)とは…?
・ソフトウェアやプログラムの命令を、ハードウェアに伝える役割を担うもので、「カーネル」と呼ばれる中核部分と、その「周辺部分」で構成されています。
・「周辺部分」がプログラムの命令を受け取り、 それを「カーネル」に伝達し、カーネルがハードウェアを操作します。

Operating System

「Linux OSっぽいもの」とは・・・?
ホストOSの「周辺部分」に代わるもので、ソフトウェアの命令をホストOSのカーネルに伝達する役割を担います。

Dockerコンテナで言う「Linux OSっぽいもの」

🔲Docker コンポーネント

・Container(コンテナ)
   ホストの他の部分とは切り離された独立したプロセス
Image(イメージ)= Repository(リポジトリ)
  Container(コンテナ) を実行するためのファイルの集まり
Registry(レジストリ)
   Imageの置き場所、有名なのはDockerHub

🔲Registry(レジストリ) と Repository(レポジトリ)

・Registry(レジストリ)は、コンテナイメージを保存・管理するための中央集権的な場所です。
・一方、Repository(レポジトリ)は、レジストリ内の関連するコンテナイメージのコレクションです。リポジトリは、プロジェクトに基づいてイメージを整理するフォルダのように考えると良いでしょう。各リポジトリには、1つ以上のコンテナイメージが含まれています。

引用:https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/ より

🔲Docker アーキテクチャ

Dockerは 、Client/Server アーキテクチャ

  • ユーザーは 、docker コマンドを発行してDockerを操作する

  • クライアントは、同じマシンまたはリモートマシン上で動作するDockerデーモンにdockerコマンドを発行する

  • ローカルマシンのDockerデーモンとの通信には、Unixソケット(/var/run/docker.sock)が使われる

  • RESTful APIを使って外部からdockerを操作することも可能

引用:https://docs.docker.com/get-started/docker-overview/ より

🔲Docker コマンド例

Dockerの操作は、基本的にdockerコマンドを使用して行います。

  • docker --version (Docker versionの確認)

  • docker images (ローカルコンテナイメージ一覧の確認)

  • docker ps (現在実行中のコンテナ一覧の確認)

  • docker pull <container> (Docker Hubレジストリからイメージのダウンロード)

  • docker start <container> (コンテナの起動)

  • docker stop <container> (コンテナの停止)

  • docker rm <container> (コンテナの削除)

  • docker rmi <image> (コンテナイメージの削除)

最後に

本記事が、少しでもDockerの理解を整理する手助けになれば幸いです。
最後までお読みいただき、ありがとうございました(。・ω・。)ノ♡

いいなと思ったら応援しよう!