Skip to content

DNET_Docker

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

Docker

  • TOP > Linux
  • 戻る(Linux、言語等に依存しない汎用開発支援ツール)

概要

LXC(Linuxコンテナ)

LXC(Linuxコンテナ)とは、Linuxネイティブなコンテナの事。

  • Linux OSの持つコンテナ機能やリソースの管理機能などをベースに作られた、コンテナ型の仮想化技術

  • コンテナ自体は、Dockerが登場する以前から存在し、古くから商用製品にも採用されている技術

  • 一般的に、Linux OS上での分離された空間を「Linuxコンテナ」と呼び、Linuxコンテナは、一般的に、LXCとも呼ばれる

方式

  • コンテナ・イメージは、

    • LinuxのABI (Application Binary Interface)より上の「特定のディストリビューション上で再現されたファイルシステム」から
    • VSSでも使用しているCopy on Write(CoW)のスナップショット(差分)の仕組みをUnionFileSystemの機能で実現して、差分で作成する
  • これにより、コンテナ型の仮想化技術を実現している

    • システム的にはカーネル共有の単なるプロセスの起動

特徴

  • マシン全体を仮想化する仮想化技術と比べると、コンテナによる仮想化は軽量・高速で、実行に必要なリソースも少なくて済む

  • システムの構成変更や展開の容易さなどから、開発段階から実運用環境まで、幅広く利用されている

  • コンテナ上で動作するプログラムは、基本的にはLinuxのバイナリ

Dockerコンテナ

  • 古いバージョンのDockerは、Linuxコンテナを使っていたため、LinuxコンテナもDockerコンテナも同一のものとして考えても差し支えなかった

  • 現在のDockerは、libcontainerを利用するようになり、Linuxコンテナに依存する部分が無くなった

  • このため、LinuxコンテナとDockerコンテナは、同じものではないが、考え方という観点では、LinuxコンテナもDockerコンテナも、同様の分離された空間を提供することには違いがない

参考:

機能

コア機能

  • コンテナ実行環境:軽量で高速なコンテナ
  • イメージ管理:レイヤー構造による効率的な管理
  • ネットワーク:複数のネットワークドライバー対応
  • ボリューム:永続的データ保存

主要コンポーネント

Docker Engine

  • Dockerデーモン(dockerd)
  • REST API
  • CLIクライアント(docker)
  • 公式イメージレジストリ
  • 公開・プライベートリポジトリ
  • 自動ビルド機能
  • 複数コンテナのアプリケーション定義・実行
  • YAMLファイルで設定管理
  • 開発環境の簡単な構築
  • コンテナイメージの定義ファイル
  • コード化されたインフラ(Infrastructure as Code)
  • 再現可能なビルドプロセス
  • プライベートレジストリの構築
  • イメージの保管と配布

基本コマンド

イメージ操作

docker pull <image>      # イメージのダウンロード
docker build -t <tag> .  # イメージのビルド
docker images            # イメージ一覧表示
docker rmi <image>       # イメージの削除

コンテナ操作

docker run <image>       # コンテナの起動
docker ps                # 実行中コンテナ一覧
docker stop <container>  # コンテナの停止
docker rm <container>    # コンテナの削除
docker exec -it <container> /bin/bash  # コンテナ内でコマンド実行

ネットワーク操作

docker network ls        # ネットワーク一覧
docker network create    # ネットワーク作成
docker network connect   # コンテナをネットワークに接続

ユースケース

開発環境

  • 環境の標準化と再現性
  • チーム間での環境共有
  • 複数バージョンの環境並存

CI/CD

  • ビルド環境の一貫性
  • テストの並列実行
  • デプロイメントの自動化

マイクロサービス

  • サービスの独立した実行
  • スケーラビリティ
  • 障害の分離

アプリケーション配布

  • 依存関係を含めたパッケージ化
  • クロスプラットフォーム対応
  • 簡単なインストール

エコシステム

オーケストレーション

  • Kubernetes:大規模コンテナ管理
  • Docker Swarm:Docker組み込みのオーケストレーション
  • Open PaaS / CaaS

関連技術

セキュリティ

  • イメージの脆弱性スキャン
  • 最小権限の原則
  • ネットワークの分離
  • シークレット管理

参考


Tags: 移行, Docker, コンテナ, 仮想化

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally