Docker를 설치하지 않고도 Docker 이미지를 빌드 할 수 있습니다.

전제

  1. 도커
  2. 컨테이너 거울 창고

다음은 공유 할 수있는 두 개의
dockerhub Alibaba Cloud 컨테이너 이미지 서비스 의 예입니다.

머리말

이 기사에서는 주로 Google에서 오픈 소스로 제공하는 Java 필드의 도커 빌드 도구 지브를 소개합니다.

현재 github 의 시작에는 8.5k가 있고 포크에는 784가 있으며 이는 매우 편리한 Java 필드 도커 구성 도구입니다.

하이라이트는 Docker 데몬이 필요하지 않다는 것입니다. 즉, docker가 로컬에 설치되어 있지 않더라도 jib를 통해 docker 이미지를 빌드 할 수 있으며 OCI 사양 을 준수하는 이미지를 빌드 할 수 있습니다 .

공식적으로 지원되는 세 가지 방법 :

  1. 메이븐 플러그인
  2. 등급 플러그인
  3. 지브 코드베이스

이 기사에서는 springboot 프로젝트를 사용하여 maven 플러그인을 통해 설명합니다.

자체 개발 한 플랫폼에서 자바 도커 서비스를 구축하는 데 사용할 수있는 세 번째 유형 인 jib 코드베이스에 대해 이야기하겠습니다.

pom.xml 구성

파일에 다음 표준 태그를 추가합니다.

<build>
    <plugins>
      ...
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.0.0</version>
        <configuration>
          <from>
					  <image>registry.cn-hangzhou.aliyuncs.com/dragonwell/dragonwell8:8.1.1-GA_alpine_x86_64_8u222-b67</image>
					</from>
          <to>
            <image>imageName</image>
          </to>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>

위의 내용 imageName은 최종 빌드 된 도커 이미지 주소 인 결과 이미지 이름을 구성합니다. 容器仓库地址/镜像名称:版本号예를 들어 registry.cn-beijing.aliyuncs.com/lyp/lanbox:v1.0웨어 하우스 주소가 채워지지 않은 경우 기본값은 dockerhub 입니다.

또한 registry.cn-hangzhou.aliyuncs.com/dragonwell/dragonwell8:8.1.1-GA_alpine_x86_64_8u222-b67Dockerfile의 From 문과 동일한 것으로 간주 할 수 있는 기본 이미지가 구성 됩니다.

기본 이미지 또는 대상 이미지에 계정 암호가 필요한 경우 from 태그 또는 to 태그에 인증 정보를 추가하기 만하면 다음 세 가지 방법이 있습니다.

  1. Docker 구성 파일에 구성됨
  2. Maven의 setting.xml에서 구성
  3. pom.xml 파일에서 직접 구성

이 기사에서는 세 번째 유형을 사용하는데, 이는 from 태그 또는 to 태그 아래에 인증 정보에 대한 인증 태그를 추가하는 것입니다. 예를 들면 다음과 같습니다.

<from>
  ...
  <auth>
    <username>kafeidou</username>
    <password>kafeidou</password>
  <auth>
  ...
</from>  

환경 변수를 통해 쉽게 구성 할 수도 있습니다.

<from>
  ...
  <auth>
    <username>${env.REGISTRY_FROM_USERNAME}</username>
    <password>${env.REGISTRY_FROM_PASSWORD}</password>
  <auth>
  ...
</from> 

상기 ${env.}실제 환경 변수 뒤에 고정 부분.

시스템 속성을 사용할 수도 있습니다.

mvn compile jib:build \
    -Djib.to.image=myregistry/myimage:latest \
    -Djib.to.auth.username=kafeidou \
    -Djib.to.auth.password=kafeidou

빌드 할 때 매개 변수를 통해 인증 정보를 전달하는 것이 편리합니까?

계속해서 configuration라벨 container구성을 확인합니다.
이 구성 태그는 다음과 같은 주요 대상 선박 관련 콘텐츠입니다.

  1. appRoot-> war 패키지 프로젝트에 사용되는 애플리케이션의 루트 디렉토리를 배치합니다.
  2. args-> 프로그램의 추가 시작 매개 변수.
  3. 환경-> 컨테이너의 환경 변수
  4. 형식-> OCI 사양의 미러 구축
  5. jvmFlags-> JVM 매개 변수
  6. mainClass-> 프로그램 시작 클래스
  7. 포트-> 컨테이너 개방 포트
    ... https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#container-object에
    대한 다른 콘텐츠가 있습니다 .

한 가지 주목할 점은 Ali의 컨테이너 미러링 서비스는 OCI 미러링을 지원하지 않으므로 Ali의 컨테이너 미러링 서비스를 사용하기로 선택한 경우 기본적으로 취소되는 OCI 형식을 취소해야합니다.

또한 JVM 매개 변수는 환경 변수를 통해 동적 컨텐츠로 구성 할 수 있으므로 jvmFlags레이블 에 모든 시작 매개 변수를 작성하도록 계획 할 필요가 없습니다 .

Collector G1은 예를 들어 컨테이너가 시작되는시기를 지정합니다 docker run -it -e JAVA_TOOL_OPTIONS="-XX:+UseG1GC" -d registry.cn-beijing.aliyuncs.com/lyp/lanbox:v1.0.

모든 구성 항목이 완료된 후 mvn 명령을 실행 mvn compile jib:build하여 docker 이미지 빌드 시작합니다.

다음과 같은 메시지가 표시되면 성공한 것입니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  42.598 s
[INFO] Finished at: 2020-02-18T23:30:53+08:00
[INFO] ------------------------------------------------------------------------

완전한 예제는 github https://github.com/FISHStack/hello-spring-cloud 에서 보고 다운로드 할 수 있습니다 .

원두 4 개 원두 를 재현, 출처를 명시 해주세요.
공개 만두 번호-> [커피 원두 4 개] 최신 콘텐츠 획득
커피 원두 4 개

추천

출처blog.csdn.net/lypgcs/article/details/104387290