[解決済み】Dockerがlxc-tools(ユーザースペースのLXCツール)に追加するものは何ですか?)
質問
Dockerの機能を見てみると、そのほとんどがLXCで既に提供されています。
では、Dockerは何を追加するのでしょうか?なぜ素のLXCではなくDockerを使うのか?
解決するには?
からの Docker FAQ :
lxcとは、Linuxカーネルの機能(特に名前空間と制御グループ)のことで、プロセスを互いにサンドボックス化し、そのリソース割り当てを制御することができます。
Dockerは、このような低レベルのカーネル機能の基盤の上に、いくつかの強力な機能を持つ高レベルのツールを提供しています。
-
マシンをまたいだポータブルなデプロイメント。 Dockerは、アプリケーションとその依存関係をすべて1つのオブジェクトにバンドルする形式を定義しており、Dockerが有効な任意のマシンに転送し、そこでアプリケーションに公開される実行環境が同じであることを保証して実行することが可能です。Lxcはプロセスのサンドボックス化を実装しており、これはポータブルデプロイメントの重要な前提条件ですが、それだけではポータブルデプロイメントには十分ではありません。なぜなら、それはあなたのマシンの特定の構成(ネットワーク、ストレージ、ロギング、ディストロなど)に結び付いているからです。Dockerは、このようなマシン固有の設定を抽象化して定義しているので、まったく同じDockerコンテナを、さまざまなマシンで、さまざまな構成で、変更せずに実行することができます。
-
アプリケーション中心。 Dockerは、以下のようなデプロイメントに最適化されています。 アプリケーション マシンとは対照的です。このことは、API、ユーザーインターフェース、設計思想、ドキュメントに反映されています。対照的に、lxcヘルパースクリプトは、軽量マシンとしてのコンテナ、つまり、基本的には、より速く起動し、より少ないラムで済むサーバに焦点を当てています。私たちは、コンテナにはそれ以上のものがあると考えています。
-
自動ビルド . Dockerには、開発者がアプリケーションの依存関係、ビルドツール、パッケージングなどを完全に制御しながら、ソースコードからコンテナを自動的に組み立てるためのツールが含まれています。開発者はmake、maven、chef、puppet、salt、debianパッケージ、rpm、ソースtarball、またはこれらの任意の組み合わせを自由に使用することができます。 マシンの構成に関係なく .
-
バージョン管理。 Dockerには、コンテナの連続したバージョンを追跡し、バージョン間の差分を検査し、新しいバージョンをコミットし、ロールバックするなどのgitのような機能があります。また、履歴には どのように そのため、本番サーバーから上流の開発者に至るまで、完全なトレーサビリティを得ることができます。Dockerはまた、"git pull"に似た増分アップロードとダウンロードを実装しているので、コンテナの新しいバージョンは差分だけを送信することで転送することができる。
-
コンポーネントの再利用。 どのコンテナも、より特化したコンポーネントを作成するためのベースイメージとして使用することができます。これは手動で行うこともできますし、自動ビルドの一部として行うこともできます。たとえば、理想的な Python 環境を用意し、それをベースとして 10 種類のアプリケーションを作成することができます。理想的なpostgresqlのセットアップは、将来のすべてのプロジェクトに再利用することができます。などなど。
-
共有する Dockerは、パブリックレジストリ( https://registry.hub.docker.com/ redis、couchdb、postgres、irc バウンサー、rails アプリサーバー、hadoop、様々なディストロのベースイメージなど、何千もの人々が有用なコンテナをアップロードしています。このレジストリには、Dockerチームによって管理されている、便利なコンテナの公式なquot;標準ライブラリ(standard library")も含まれています。レジストリ自体はオープンソースなので、誰でも自分のレジストリをデプロイして、例えば社内サーバーのデプロイ用に、プライベートコンテナを保存したり転送したりすることができます。
-
ツールのエコシステム。 Dockerは、コンテナの作成とデプロイを自動化およびカスタマイズするためのAPIを定義しています。dockerと統合し、その機能を拡張するツールは膨大な数にのぼります。PaaS的なデプロイメント(Dokku, Deis, Flynn)、マルチノード・オーケストレーション(maestro, salt, mesos, openstack nova)、管理ダッシュボード (docker-ui, openstack horizon, shipyard), 構成管理 (chef, puppet), 継続的インテグレーション (jenkins, strider, travis) などなどです。Dockerは、コンテナベースのツールの標準として、急速にその地位を確立しつつあります。
お役に立てれば幸いです。
関連
-
[解決済み] Dockerコマンドの--net=hostオプションは実際どうなのか?
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerイメージはホストマシン上のどこに保存されていますか?
-
[解決済み] Dockerイメージの削除方法について教えてください。
-
[解決済み] 既存のDockerコンテナにボリュームを追加するにはどうすればよいですか?
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
-
[解決済み】Docker Registry v2 でイメージのリストを取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] "フロントエンドのdockerfile.v0との解決に失敗しました "というエラー。
-
[解決済み] Dockerはインストールされているのに、Docker Composeがインストールされていないのはなぜですか?
-
[解決済み] dockerfileのcopyコマンドで使われる-fromとは?
-
[解決済み] dockerfileでローカルイメージをベースイメージとして使用するにはどうすればよいですか?
-
[解決済み] 引数を受け取るシェルスクリプトでDocker Runのエントリポイントをオーバーライドする
-
[解決済み】Docker.NETの不具合を修正する方法。パーミッションが拒否される問題
-
[解決済み】Dockerコンテナでボリュームをリストアップする方法は?
-
[解決済み】Dockerエラーは、Dockerコンテナを削除することはできません、競合:リポジトリ参照を削除することはできません。
-
[解決済み】Dockerのコンテナイメージが大きいのはなぜですか?
-
[解決済み】Dockerfileに引数を渡すには?