docker
chroot
iRidgeDay 14

chrootとDockerの使い分け

chrootとDocker(LXC)の違いって?

chroot

メリット

  • ホストからファイルシステムが隔離される。(パッケージが分離できる。)
  • ルートを移動するだけなので、ホストからはそのまま参照できる。
  • 固めれば、容易に環境が移動できる。(環境の共有が可能)
  • 導入が簡単 or 初期で導入されてる。

デメリット

  • ユーザーランドがすべて隔離されるわけではない。(プロセスなどがホストと共有)
  • Linuxでしか使えない。(BSDはJail)

Docker

メリット

  • ユーザーランド全体が隔離できる。
  • Exportで容易に環境が移動できる。(環境の共有が可能)

デメリット

  • Dockerを導入しないといけない。
  • Version/Distributionによっては導入できない。
  • 仮想化技術との連携でLinux以外で動かせる。 (※ WindowsはWindows Containerができたのでそのまま使える。

運用案

開発環境はchrootで簡単に

  • 開発初期段階など、構成変更が激しいタイミングなどはchrootでやると楽?
  • 一時的な開発参入はchrootでお手軽に?
  • データのやり取りが激しい時はchrootで意識せずに開発?

評価環境/本番環境はDockerで厳密に

  • ユーザランドが完全に隔離されるDockerを本番では使う。
  • 評価環境は本番環境に合わせる。

chrootとDockerの切り替え

Dockerからchrootへの切り替え

  1. DockerのImageをexportする。
  2. exportしたImageを展開する。
  3. 展開先にchrootでアクセスする。
docker save > [filename.tar]
tar -xvfp [filename.tar] -C [path]
chroot [path]

chrootからDockerへの切り替え

  1. chrootのディレクトリをtarに固める。
  2. Dockerでインポートする。
tar -cvfp [filename.tar] [path]/*
cat filename.tar | docker import - [filename.tar] REPOSITORY[:TAG]