1.コンテナ
ドッカーが環境の違いを解決するために、ドッカー標準化されたインフラストラクチャサービス、パッケージ統一配布、展開、およびオペレーティングシステムに関連するクラスライブラリ質的な飛躍をもたらすために、コンテナ技術を判明する際の試験生産の展開問題。運用・保守のために起因するミラーの柔軟性の欠如、より容易なサービス展開とロールバック操作に、懸念しています。さまざまなサードパーティ製の管理プラットフォーム、キーの配置、操作の動的な伸縮を使用してコンテナが容易になります。
2.ベースイメージを選択します
選択したオペレーティングシステムでは、伝統的なCentOSのは、Ubuntu以上の軽量アルパインを選択してください。CentOSのまたはUbuntuのような、画像サイズの軽量アルパイン3.10バージョンが5.58メガバイト程度でありながら、圧縮はまた、数十MBを有した後、100メガバイト以上に反映し、その後のサイズにのみ約2MBに圧縮されます。
アルパインは軽量Linuxディストリビューションのための安全なオペレーティングシステムです。それはとても、より多くのオープンソースコミュニティが好む、アルパインは、資源消費とシステムのサイズを小さくし、実行時にするのbusyboxのlibc MUSLを使用しますが、彼らはbusyboxのより完璧に機能し、通常のLinuxディストリビューションとは異なります。薄いを維持しつつ、アルパインは、独自のパッケージ管理ツールのAPKを提供します。
基本画像選択で、最小限の依存関係を提供するために、ミラーの大きさ、その他を考えます。第二の点では、異なるサービスに必要な依存関係は、最初のポイントを考慮するだけで、その後、アルパインは間違いなく最初の選択、小さい画像、リソースのリモートスライド速い消費であれば、ここでの議論はもはや、違いはありませんより小さく、より便利に、我々はアルパインミラーのための基礎として、ここで使用しました。
書か3. Dockerfile
選択アルパインは面倒な場所を持っているアルパインは、標準Cライブラリを使用して、またはOracle OpenJDKのバージョンは、主のglibcで提供されて基づいているMUSL libcのです。したがって、我々は、基本イメージとしてのglibcをコンパイルするJDKのバージョンを追加し、アルパインプラスのglibcを検討してください。
3.1アルパイン+のglibc
ここでは、最新バージョンのアルパイン3.10バージョンを選択したバージョンがあり、glibcがglibcのSgerrandオープンソースインストールパッケージ(https://github.com/sgerrand/alpine-pkg-glibc/)、バージョン2.30-R0を使用しています。具体的なコードは次のよう:
リスト:第17章/ dockerfiles /アルパインのglibc / Dockerfile
***
FROM alpine:3.10
MAINTAINER [email protected]
RUN apk add --no-cache ca-certificates curl openssl binutils xz tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& GLIBC_VER="2.30-r0" \
&& ALPINE_GLIBC_REPO="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \
&& curl -Ls ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk > /opt/${GLIBC_VER}.apk \
&& apk add --allow-untrusted /opt/${GLIBC_VER}.apk \
&& curl -Ls https://www.archlinux.org/packages/core/x86_64/gcc-libs/download > /opt/gcc-libs.tar.xz \
&& mkdir /opt/gcc \
&& tar -xf /opt/gcc-libs.tar.xz -C /opt/gcc \
&& mv /opt/gcc/usr/lib/libgcc* /opt/gcc/usr/lib/libstdc++* /usr/glibc-compat/lib \
&& strip /usr/glibc-compat/lib/libgcc_s.so.* /usr/glibc-compat/lib/libstdc++.so* \
&& curl -Ls https://www.archlinux.org/packages/core/x86_64/zlib/download > /opt/libz.tar.xz \
&& mkdir /opt/libz \
&& tar -xf /opt/libz.tar.xz -C /opt/libz \
&& mv /opt/libz/usr/lib/libz.so* /usr/glibc-compat/lib \
&& apk del binutils \
&& rm -rf /opt/${GLIBC_VER}.apk /opt/gcc /opt/gcc-libs.tar.xz /opt/libz /opt/libz.tar.xz /var/cache/apk/*
ここで注意すべきいくつかのポイントは以下のとおりです。
- ドッカーが積層設計であるため、Dockerfileで、各コンテキストは、独自の命令次の層は、ラミネート層を構築するために添加し、そして従ってインストールライブラリにあるであろうときに実行されるべき次の命令を有します成層を減らす同じRUNコマンドで記述されたコマンドへのベストタイムは、最終的な画像のサイズを小さく
- RUNコマンドは、ライブラリまたはパッケージにインストールされている、あなたは、画像サイズを小さく、効果的にAPKを削除するように、同じコマンドでキャッシュAPKを削除する必要があります。
- ミラーは、ラベルが指定されていない場合は、最新のデフォルトのラベルを使用しますが、最新のベースイメージタグを使用しないでください。画像の更新は、最新のラベルが異なるミラーを指すことになる場合には、その後、ミラーリングが失敗する可能性が構築します。あなたが本当にベースイメージの最新バージョンが必要な場合は、最新のラベルを使用することができ、それ以外の場合は、特定の画像タグを指定することが最善です。
- ここで私はアリの倉庫をミラーリングクラウドにアップロードされたバージョンを作成している、読者が直接、この画像の使用を引くことができます必要があります。
docker pull registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:glibc-2.30-r0
3.2アルパイン+ glibcの+ JDK8
選択したJDKのバージョンについては、OracleのホットスポットJDKはOpenJDKのは、そこにあります。のJDK8を構築するときにここでは、Oracleのサーバjreを-8u221バージョンを使用します。JDK9、JDK10とJDK11のために我々はOpenJDKのを構築するために使用します。
以下のように構築OracleのJDK8 Dockerfileミラー:
リスト:第17章/ dockerfiles / java8 / Dockerfile
***
FROM registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:glibc-2.30-r0
MAINTAINER [email protected]
ADD server-jre-8u221-linux-x64.tar.gz /opt/
RUN chmod +x /opt/jdk1.8.0_221
ENV JAVA_HOME=/opt/jdk1.8.0_221
ENV PATH="$JAVA_HOME/bin:${PATH}"
ここでも、この著者はアリクラウドストレージのミラーイメージをアップロードした、あなたは直接引っ張るために、次のコマンドを使用することができます。
docker pull registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:8u221-jre
次のように検証することができ、コマンドは次のとおりです。
docker run --rm -it registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:8u221-jre java -version
次のように実行結果は以下のとおりです。
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
3.3アルパイン+のglibc + OpenJDK9
以下のように構築OpenJDK9 Dockerfileミラー:
リスト:第17章/ dockerfiles / java9 / Dockerfile
***
FROM registry.cn-shanghai.aliyuncs.com/weishiyao/alpine-3.10:glibc-2.30-r0
MAINTAINER [email protected]
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/community" > /etc/apk/repositories
RUN apk --update add curl bash openjdk9-jre && \
rm -rf /var/cache/apk/*
ENV JAVA_HOME /usr/lib/jvm/default-jvm
ENV PATH ${PATH}:${JAVA_HOME}/bin
本明細書で使用される著者は、OpenJDKの鏡像清華ステーションインストールをjreを。
ここでも、この著者はアリクラウドストレージのミラーイメージをアップロードした、あなたは直接引っ張るために、次のコマンドを使用することができます。
docker pull registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk9-jre-9.0.4
次のコマンドを確認します。
docker run --rm -it registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk9-jre-9.0.4 java -version
次のように実行結果は以下のとおりです。
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+12-alpine-r1)
OpenJDK 64-Bit Server VM (build 9.0.4+12-alpine-r1, mixed mode)
3.4アルパイン+ glibcの+ OpenJDK10
以下のように構築OpenJDK10 Dockerfileミラー:
リスト:第17章/ dockerfiles / java10 / Dockerfile
***
FROM registry.cn-shanghai.aliyuncs.com/weishiyao/alpine-3.10:glibc-2.30-r0
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/community" > /etc/apk/repositories
RUN apk --update add curl bash openjdk10-jre && \
rm -rf /var/cache/apk/*
ENV JAVA_HOME /usr/lib/jvm/default-jvm
ENV PATH ${PATH}:${JAVA_HOME}/bin
ここでも、この著者はアリクラウドストレージのミラーイメージをアップロードした、あなたは直接引っ張るために、次のコマンドを使用することができます。
docker pull registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk10-jre-10.0.2
次のコマンドを確認します。
docker run --rm -it registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk10-jre-10.0.2 java -version
次のように実行結果は以下のとおりです。
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-alpine-r0)
OpenJDK 64-Bit Server VM (build 10.0.2+13-alpine-r0, mixed mode)
3.5アルパイン+ glibcの+ OpenJDK11
以下のように構築OpenJDK11 Dockerfileミラー:
リスト:第17章/ dockerfiles / java11 / Dockerfile
***
FROM registry.cn-shanghai.aliyuncs.com/weishiyao/alpine-3.10:glibc-2.30-r0
MAINTAINER [email protected]
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.10/community" > /etc/apk/repositories
RUN apk --update add curl bash openjdk11-jre && \
rm -rf /var/cache/apk/*
ENV JAVA_HOME /usr/lib/jvm/default-jvm
ENV PATH ${PATH}:${JAVA_HOME}/bin
ここでも、この著者はアリクラウドストレージのミラーイメージをアップロードした、あなたは直接引っ張るために、次のコマンドを使用することができます。
docker pull registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk11-jre-11.0.2
次のコマンドを確認します。
docker run --rm -it registry.cn-shanghai.aliyuncs.com/springcloud-book/alpine3.10:openjdk11-jre-11.0.2 java -version
次のように実行結果は以下のとおりです。
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+4-alpine-r1)
OpenJDK 64-Bit Server VM (build 11.0.4+4-alpine-r1, mixed mode)