사용자 정의 Docker 이미지에 대한 작업
2020년 11월 20일에 Dockerhub는 익명 이미지 가져오기에 대한 비율 제한을 도입했습니다. 이 변경사항은 Dockerhub 호스팅 사용자 정의 이미지를 사용하여 작업을 실행 중인 사용자에게 영향을 줄 수 있습니다.
파이프라인 기본 이미지는 빌드의 모든 요구사항을 지원하지는 않을 수 있습니다. 예를 들어, 노드, Java 또는 다른 도구의 버전에 대해 보다 세분화된 제어가 필요할 수 있습니다. 환경을 설정하기 위해 일련의 새 패키지를 설치하고 PATH와 같은 환경 변수를 주의깊게 구성하는 파이프라인 작업에 첫 번째 단계를 포함시킴으로써 이 문제를 해결할 수 있습니다. 그러나 더 나은 방법은 파이프라인의 사용자 지정 Docker
이미지 실행 지원을 작업의 기반으로 사용하는 것입니다.
파이프라인의 사용자 정의 Docker 이미지 지원은 실행 중에 특정 파이프라인 작업이 사용하는 이미지를 제공하기 위해서만 사용됩니다. 예를 들어, 작업이 실행하는 스크립트에 필요한 사용자 정의 도구가 포함된 이미지를 제공할 수 있습니다. 작업이 완료되면 실행 중인 컨테이너가 분류됩니다.
빌드, 테스트 또는 배치 작업 유형을 사용 중이든 사용자 정의 Docker 이미지 하위 유형을 선택하여 실행할 스크립트를 지정하고 사용하도록 Docker 이미지 이름을 제공할 수 있습니다. 예를 들어, 다음 옵션을 사용하여 Maven 3.5.3 및 IBM Java로 빌드 작업을 실행하십시오.
Docker 이미지 이름 지정
사용자 정의 Docker 이미지 작업의 Docker 이미지 이름은 이미지 이름이 Docker CLI와 작동하는 동일한 방식으로 작동하도록 설계되었습니다. Docker 이미지 이름의 형식은 [repository][:][tag]입니다. 예를 들어, docker run maven:3.5.3-ibmjava의 경우 Docker 이미지는 maven:3.5.3-ibmjava이며
여기서 maven은 저장소이며 3.5.3-ibmjava는 태그입니다. 사용할 수 있는 Docker 이미지 이름에 대한 제한사항은 없습니다. 올바른 Docker 이미지는 모두 작동합니다.
Docker 이미지 이름 필드가 채워지지 않은 경우 표준 파이프라인 기본 이미지가 사용됩니다.
기본적으로 Docker 허브의 리포지토리가 검색됩니다. IBM Cloud® Container Registry와 같은 다른 Docker 레지스트리를 사용하는 경우 전체 DNS 이름을 사용할 수 있습니다. 또한 Docker 허브의 이미지에 대한 완전한 이름을 사용할 수 있습니다. 예를 들어, registry.hub.docker.com/library/maven:3.5.3-ibmjava입니다.
Docker 이미지에 대한 tag는 선택사항입니다. 태그를 지정하지 않는 경우 기본적으로 latest로 설정됩니다. 기본값 latest는 저장소 소유자가 관리해야 하는 태그 이름입니다. 이 Docker 이미지가 시간 순서대로 최신 이미지라는 것을 의미하지 않습니다.
Docker 허브에서 대규모의 저장소 커뮤니티를 찾을 수 있습니다. IBM 는 IBM Cloud 팀이 사용하는 여러 공개 리포지토리를 호스팅합니다 https://hub.docker.com/u/ibmcom/. ibmcom/ibmjava 및 ibmcom/ibmnode 저장소는 빌드하는 데 유용합니다.
개인용 이미지 레지스트리 사용
인증이 필요한 비공개 레지스트리를 사용하는 경우 DOCKER_USERNAME 및 DOCKER_PASSWORD 두 가지 스테이지 환경 속성을 추가로 설정해야 합니다. DOCKER_PASSWORD를 마스킹하기 위해 보안 특성을 사용할 수 있습니다. 이미지를 가져오기 전에 사용자 정의 Docker 이미지 작업은 사용자 이름 및 비밀번호 인증 정보를 사용하여 docker login을
완료합니다.
대부분의 레지스트리의 경우 제공된 사용자 이름 및 비밀번호를 사용할 수 있습니다. IBM Cloud Container Registry를 사용하여 개인용 이미지를 저장하는 경우 인증을 위해 플랫폼 API 키를 사용해야 합니다.
-
플랫폼 API 키를 요청하고 키를 저장해야 합니다.
-
iamapikey에DOCKER_USERNAME를 사용하고DOCKER_PASSWORD에 대해 저장한 플랫폼 API 키를 사용하여 두 가지 단계 환경 특성을 작성하십시오.caption-side=bottom"
스크립트 지정
사용자 정의 Docker 이미지 작업의 스크립트 블록을 사용하여 태스크 폴더에서 실행하는 스크립트 파일을 작성할 수 있으며 이 스크립트는 정규 파이프라인 작업의 작동 방법과 유사합니다.
Docker 이미지의 Dockerfile의 ENTRYPOINT 및 CMD는 대체되며 호출되지 않습니다. 일부 경우 스크립트에 초기화 단계를 추가해야 할 수 있습니다.
사용자 정의 Docker 이미지 작업을 사용하면 스크립트를 실행하는 방법에 대한 유연성이 높아질 수 있으며 특히 명령 해석기를 제어할 수 있습니다. 일반적으로 스크립트의 첫 번째 행이 #! 및 명령 해석기의 이름으로 시작하는 경우 해당 항목은 작업에서 명령을 실행하는 데 사용됩니다. 명령 해석기를 지정하지 않은 경우 Docker 이미지의 기본 쉘이 사용됩니다. 보통 #!/bin/bash 또는 #!/bin/sh가 사용됩니다. 적합한 Docker 이미지를 지정하는 경우 awk, node 및 ruby에 대한 이미지 명령 해석기도 작동합니다.