[翻訳] Dockerについてよくある勘違い

こんにちは、hachi8833です。今回は弊社システム管理者のyamasitaさん監修のもとで、Matt Jaynes氏のDocker Misconceptionsを翻訳いたしました。それなりに文言を最適化してあり、原文と一対一対応しているとは限りませんのでご了承ください。エラーがありましたらお知らせいただけると助かります。 Dockerについてよくある勘違い Matt Jaynes 元記事: Docker Misconceptions Dockerは最近のシステム管理業界で大変な脚光を浴びてます。これによるシステム管理の進歩ははかりしれないものがありますが、いくつか重要な点で勘違いしている人を見かけます。 分野を限定して語っているのでよろしく この記事で説明する内容は、主にWebサービスにおけるミッションクリティカルなシステムのマルチホストセットアップに限定しています。Dockerをそれ以外のところで使う場合、この記事の内容が必ずしも該当するとは限りませんので、その点くれぐれもご注意ください。 Dockerについての基礎知識 この記事では、読者がDockerとその一般的な動作について基本的なことを理解していることを前提にしています。 Dockerそのものについてすべてを説明するのはこの記事の範疇を超えるので、Dockerが何なのかまったくわからない方は以下の記事を読み通してからにしてください。 Dockerとは何か (英語) Dockerの概要(英語) 誤解されがちなこと Dockerは多くの場面で使用できる素晴らしいツールです。しかしながら、Dockerを恒常的に使ううちに、さまざまな勘違いに遭遇しました。 勘違い: Dockerさえ学べば他のシステム管理ツールを学ぶ必要なし いつの日かそうなるとよいですね。でも残念ながら、当分そうはいきません。Dockerは高度なシステム管理にこそ使うものであり、何もかもをカバーするものではありません。もちろんDockerは最高にクールでパワフルですが、その分システムがかなり複雑になるのも確かです。Dockerをミッションクリティカルなシステムに適用するのであれば、あなた自身が経験豊富なシステム管理のエキスパートであり、かつ本番環境で安全に運用するために必要なポイントを完璧に把握している必要があります。 現時点では、Dockerを使いこなすには相当なシステム管理の知識が必要です。知識が少なくて済むということはありません。皆様が目にするDockerの紹介記事のほとんどは、事例があまりに単純化されていて、Dockerを本番マルチホスト環境で使用する場合の複雑さから目を背けています。このため、Dockerを本番環境で実際に使用する場合に必要なことがらについて誤った印象を与えています。 Dockerを安全かつ頑健な方法で典型的なマルチホスト本番環境で実行するには、以下のような多くの要素を極めて注意深く管理することが不可欠です。 セキュリティで保護された、非公開のイメージリポジトリ (index) 組織的にコンテナのデプロイをダウンタイムゼロで実行 組織的にコンテナのデプロイをロールバックする 複数ホスト間のコンテナのネットワーキング コンテナログの管理 コンテナデータの管理(dbなど) initやログを正しく扱えるイメージの作成 他にもまだまだある これらをすべて完璧に実行することは不可能ではありません。実際、いくつもの大企業がDockerを本番環境で利用しています。ただしそれは片手間などではなく、全面的に取り組んだからこそできたことです。将来、(Flynn、Dockerコンテナホスティングなどを通じて) Dockerを取り囲むエコシステムが成熟してくればこうした点は改善されるでしょう。しかし現時点では、Dockerを本番環境に真剣に導入するのであれば、それ相応のシステム管理と統合のスキルが要求されます。 この点の理解を助けるために、以下の記事を参照してください。ここでは、これまで筆者が見かけた中で本番環境に近いものをリストアップしています (ただし重要な要素がまだまだ不足していたりします)。 Easily Deploy Redis Backed Web Apps With Docker Integrating Docker with Jenkins for Continuous Deployment of a … Continue reading [翻訳] Dockerについてよくある勘違い