🐳

【Docker】コンテナについてざっくりまとめる

に公開

できること

  • アプリの実行環境、開発環境を統一できる
    • 環境の差によるエラーなどを減らす
  • 環境構築の効率化を実現できる
    • インフラのコード化(IaC)
    • CI/CDによる自動テスト、自動デプロイ

仮想化について

  • 仮想化:OS上に別の仮想のOSを立ち上げること
  • 仮想マシン:立ち上げられるPCのこと
  • ホストOS:仮想マシンを立ち上げるOS
  • ゲストOS:仮想マシンで動作するOS

コンテナについて

  • 従来の仮想マシンは、ゲストOSを含める
    • コンテナは含めないため、軽量
  • アプリの実行はゲストOSではなく、DockerEngineというものによって実行される

メリット

  • ポータビリティが高い
  • インフラ構築をコードによって実現できる(IaC)

デメリット

  • 学習コストが高い
  • ホストOSに依存し、動作しない場合もある

Dockerについて

Dockerのリソースなどについて

  • DockerEngine:アプリの実行

  • DockerHub:Dockerイメージの共有サービス

  • Dockerイメージ:コンテナを構築するためのテンプレート

  • Dockerfile:Dockerイメージを作成時やコンテナ起動時に実行するコマンドを記載されるファイル

  • docker-compose:複数のコンテナの操作を行えるツール


Dockerfile > DockerImage > Container


全体リソース構成図

比喩で表現

  • アプリ:荷物

  • ライブラリ、設定など:梱包材

  • コンテナ:箱(コンテナ)

  • Dockerfile:梱包のマニュアル

  • DockerImage:荷物の設計書

  • DockerEngine:荷物の製造、配送を行う機械

  • DockerHub:倉庫

DockerDesktopについて

  • Windows端末上でDocker環境を構築できるソフト
  • dockerの操作を行う場合はインストール必須
  • 個人利用、小規模中小企業では無料で使える

使い方

  1. インストール
  2. ターミナルでバージョン確認
    • docker version
  3. docker run hello-worldを実行
    1. イメージがDockerHubからダウンロードされる
    2. イメージを元にコンテナが作成
    3. コンテナ起動
  • イメージとコンテナが一覧に追加されている

  • ゴミ箱マークをクリックして削除することができる

DockerHubからイメージを取得

  • 上記のようなコマンドと同様の操作をGUI上で実行できる

Docker for VSCodeについて

  • VSCode上でDockerのリソース管理などを行える拡張機能

  • DockerDesktopでのコンテナやイメージの管理に加えて、Dockerfileやdocker-composeファイルの補完などもできる

  • 詳細は下記ドキュメント参照

Kubernetesについて

  • 読み:クバネティス
  • コンテナ化されたアプリのデプロイ、スケーリング、管理の自動化
    • コンテナオーケストレーションツールという

EKSとECS

  • AWSのコンテナオーケストレーションサービス

  • EKS:Kubernetesベースのコンテナオーケストレーションサービス

  • ECS:AWS独自のコンテナオーケストレーションサービス

  • EKSに比べて、ECSのほうが学習コストが低い

  • ECSはコンテナ間で通信する際に別途インフラ構築する必要がある

さいごに

まだふんわりとしか把握できていないので、今後も実際に触れながら知見深めたいです。

  • コンテナ構築してみる
  • Kubternetesについて
  • ECSについて

参考

https://qiita.com/etaroid/items/b1024c7d200a75b992fc

https://zenn.dev/mi_01_24fu/articles/aws-ecs-2024_03_18

https://www.kagoya.jp/howto/cloud/container/dockerdesktop/

https://qiita.com/gahoh/items/7b21377b5c9e3ffddf4a

https://qiita.com/tadashiro_ninomiya/items/6e6fea807b2a16732b5b

Discussion