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

安全性



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



拡張性



その他


Source: https://habr.com/ru/post/J332160/


All Articles