Docker
アプリケーションソフトウェアは開発環境でコーディングされ、テスト環境で動作確認され、ステージング環境にデプロイされ、本番環境でサービス提供をおこない、開発環境でデバッグされる。ソフトウェア開発ではただアプリケーションのコードを書くのではなく、上記すべての環境整備と環境へのアプリケーションデプロイを行う必要がある。かつ複数人による開発では上記すべてを全員で一貫性をもって共有しなければならない。
これらを達成するには様々な状況(動作OS、既存環境)へ同一の環境とアプリケーションをできるだけ低コストで届ける必要がある。動作OS(ホストOS)や既存環境からの隔離手法にはOSレベルの仮想化があり、その一種にカーネルをホストと共有しプロセス・ファイルシステムを隔離するコンテナ仮想化がある。環境をアプリケーションごとコンテナへ隔離しコンテナのイメージファイルを配布することで、ランタイムが用意されたあらゆる状況へ同一環境・同一アプリケーションを配備できる。
Dockerはこのコンテナ仮想化を核としたアプリケーションのためのオープンプラットフォームである。環境およびアプリケーションをDockerイメージとしてバンドルし、DockerエンジンによりDockerコンテナとして配備・実行できる。
↑ Container Deployed Applications: You deploy your application into one or more containers and would like to work locally in the containerized environment.
↑ 大瀧隆太 (2014年5月16日). “いまさら聞けないDocker入門(1):アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識”. ITmedia. 2016年12月22日閲覧。
↑ “「ITインフラテクノロジーAWARD 2015」を発表”. 日経BP社. 2017年1月3日閲覧。
↑ “すでにGoogleは全部のソフトウェアをコンテナに乗せており、毎週20億個ものコンテナを起動している”. 2017年1月3日閲覧。
↑ overlay2 is the preferred storage driver, for all currently supported Linux distributions, and requires no extra configuration.
↑ Volumes are stored in a part of the host filesystem which is managed by Docker
↑ Volumes are the best way to persist data in Docker.
↑ Bind mounts may be stored anywhere on the host system.
↑ Non-Docker processes on the Docker host or a Docker container can modify them at any time.
Amazon ECRはAmazon Web Servicesが提供するプライベートレジストリである。プライベート、すなわち非公開のレジストリであり、docker loginによる認証情報の読み込みが必須である。レジストリアドレスは<aws_account_id>.dkr.ecr.<region>.amazonaws.comである。
実際のアプリの動作は複数のコンテナ同士が協調し合う事が多いとされる。このため多数のコンテナを自動的に管理する (オーケストレートする) ソフトウエアが必要となる。KubernetesやDocker Swarmは当該機能を提供する。
Docker社は、2018年1月KubernetesをDockerに統合したバージョンのベータ版を提供し始めた。