Docker 17.06およびKubernetes 1.7:主要な革新



先週、コンテナのオープンソースの世界から2つの「おいしい」リリースが提供されました。Docker(バージョン17.06)とKubernetes(バージョン1.7)はほぼ同時に更新されました。 彼らはどのような機会をもたらしましたか? この記事では、これらのリリースの発表およびリリースノートからの情報を、主要な変更点の一部について少し説明しながら提供します。



Docker CE 17.06



6月28日に、 Docker CE(Community Edition)が6月17日に発表され、Mobyプロジェクトで構築されたコンテナシステムの最初のリリースが4月に発表されました。 Mobyについてはすでに説明しました



いくつかの段階での組み立て



このリリースの主な機能は、Docker 05.17.0で初めて導入されたマルチステージビルド(マルチステージビルド)のサポートの公式な安定化でした。 その本質は、1つのDockerfile



でイメージアセンブリのいくつかの段階を記述できるため、不要な中間データが最終イメージに含まれないようにすることにあります。 Dockerで明らかな例:Java開発者は通常、アプリケーションをコンパイルするためにApache Mavenを使用しますが、これらのアプリケーションを実行するための最終コンテナー(イメージ)にはMavenは必要ありません。 これで、Maven自体が中間イメージ(アセンブリ用)で使用され、最終(起動用)にならないようにDockerfile



を配置できます。



以下に、 単純な Java Spring Boot アプリケーションの Dockerfile



オプションをDockerfile



ます。



FROM node:latest AS storefront

WORKDIR /usr/src/atsea/app/react-app

COPY react-app/package.json .

RUN npm install

COPY . /usr/src/atsea/app

RUN npm run build



FROM maven:latest AS appserver

WORKDIR /usr/src/atsea

COPY pom.xml .

RUN mvn -B -f pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve

COPY . .

RUN mvn -B -s /usr/share/maven/ref/settings-docker.xml package -DskipTests



FROM java:8-jdk-alpine

WORKDIR /static

COPY --from=storefront /usr/src/atsea/app/react-app/build/ .

WORKDIR /app

COPY --from=appserver /usr/src/atsea/target/AtSea-0.0.1-SNAPSHOT.jar .

ENTRYPOINT ["java", "-jar", "/app/AtSea-0.0.1-SNAPSHOT.jar"]

CMD ["--spring.profiles.active=postgres"]








ご覧のとおり、ここの2つの準備段階ではNode.jsとApache Mavenを使用してアプリケーションをビルドしていますが、結果のイメージはコンパクトで、Node.jsもMavenもありません。



:これまで、当社では、これらの目的のために、独自のオープンソースユーティリティdappでアーティファクトと呼ばれる機能を使用していました概要はこちらをご覧ください )。



ログとメトリック



プラグインでDockerメトリックを使用できるようになりました。 デモンストレーションのために、使用可能なメトリックのリクエストをプロキシするプラグインの例を示します。



 $ docker plugin install --grant-all-permissions cpuguy83/docker-metrics-plugin-test:latest $ curl http://127.0.0.1:19393/metrics
      
      





しかし、これは単なるデモンストレーションであり、このイノベーションの本当の目的は、プラグインの助けを借りて収集されたメトリックを外部サービスに送信するか、別のサービス(たとえば、Prometheus)によるアセンブリに利用できるようにすることです。



プラグインはログにも使用できるようになり(つまり、ロギングドライバーの実装)、すべてのロギングドライバーのリストがdocker info



追加されました。 さらに、Docker docker service logs



実装(前回のリリース05.17からも)個別のタスクログ( /task/{id}/logs



RESTの/task/{id}/logs



)も表示できますが、EdgeブランチからStableに移動され、一般的なログを簡単に取得できるようになりましたSwarmで実行されているすべてのサービス。



ネットワーク



ノード(ノードローカル)内のネットワークにサービスをバインドすることが可能になりました:ホスト、Macvlan、IPVlan、ブリッジ、ローカルスコープ。 Macvlanが提供する例は、作業ノードでホスト固有のネットワーク構成を作成し、それらを使用する管理ノードでネットワークを作成することです。



 [Wrk-node1]$ docker network create --config-only --subnet=10.1.0.0/16 local-config [Wrk-node2]$ docker network create --config-only --subnet=10.2.0.0/16 local-config [Mgr-node2]$ docker network create --scope=swarm --config-from=local-config -d macvlan mynet [Mgr-node2]$ docker service create --network=mynet my_new_service
      
      





同じ変更の一環として、 DOCKER-USER



チェーンがiptablesに追加されました。これは最初にFORWARD



挿入され、リセットされません(この追加についてはertaquoに感謝します



さらに、操作のロジックを改善するために、サービスディスカバリの内部アルゴリズムに変更が加えられました。



群れ



いくつかのイノベーションがSwarmモードを受け取りました。特に:





Docker 17.06での変更のより詳細なログとコミットへのリンクは、 Docker CEリリースノートに記載されています 。 また、ファンが視聴できるように、 8分間のビデオでストーリーと主な革新のデモンストレーションを紹介しています。



Kubernetes 1.7



6月29日にKubernetes 1.7が発表されました。その主な革新は、セキュリティの改善、ステートフルアプリケーションのサポート、プラットフォームの拡張性と呼ばれています。 この背後には何がありますか?



安全性





ステートフルアプリケーションのサポート





拡張性





その他






All Articles