Jenkins를 사용하여 Docker 이미지 만들기

이 장면에서는 Dockerfile을 기반으로 Docker 이미지를 구축하는 Jenkins를 구성하는 방법을 배웁니다.이 장면은 CI/CD 파이프에서 Docker를 어떻게 사용하고 이미지를 구축 부품으로 사용하며 이를 서로 다른 환경으로 확대하고 최종적으로 생산 환경으로 확대하는지를 보여주는 데 목적을 둔다.
이 환경에서는 Jenkins build 서버를 미리 구성하고 실행하여 작동 방식을 시험하고 이해할 수 있습니다.이 절차는 플러그인을 설치하고 구축을 만들고 결과를 보는 데 도움을 줄 것입니다.

젠킨스 발사


다음 명령을 사용하여 Jenkins를 Docker 컨테이너로 시작합니다.
docker run -d -u root --name jenkins \
    -p 8080:8080 -p 50000:50000 \
    -v /root/jenkins_2112:/var/jenkins_home \
    jenkins/jenkins:2.112-alpine
모든 플러그인과 설정이 호스트로 지속됩니다 (ssh)root@host01u/root/jenkins2112에 있습니다.8080 포트에서 웹 대시보드를 엽니다. 50000은 다른 Jenkins 에이전트와 통신하는 데 사용됩니다.마지막으로 그림에는 사이즈의 발자국을 줄이기 위한 알프스 기지가 있다.

대시보드 로드


다음 URL에서 Jenkins의 대시보드를 로드할 수 있습니다.
http://localhost:8080/
비밀번호는
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

Jenkins는 부팅을 완료하고 사용할 수 있는 데 몇 초가 걸릴 수 있습니다.다음 단계에서는 대시보드를 사용하여 플러그 인을 구성하고 Docker 이미지 구축을 시작합니다.

Docker 플러그인 구성


첫 번째 단계는 Docker 플러그인을 구성하는 것입니다.이 플러그인은 젠킨스 클라우드 플러그인을 기반으로 한다.구축에 Docker가 필요할 때 플러그인을 통해 '클라우드 에이전트' 를 만듭니다.에이전트는 Docker 데몬과 대화하도록 구성된 Docker 컨테이너입니다.
Jenkins 구축 작업은 이 컨테이너를 사용하여 구축을 수행하고 중지하기 전에 이미지를 만듭니다.Docker 이미지는 구성된 Docker 데몬에 저장됩니다.그런 다음 Docker 레지스트리로 이미지를 밀어 넣어 배치할 수 있습니다.

작업:플러그인 설치

  • 대시보드에서 왼쪽의 Manage Jenkins를 선택합니다.
  • 구성 페이지에서 관리 플러그인을 선택합니다.
  • 관리 플러그인 페이지에서 옵션 카드 인터페이스를 제공합니다.설치할 수 있는 모든 Jenkins 플러그인을 보려면 Available 을 클릭하십시오.
  • 검색 상자를 사용하여 Docker를 검색합니다.여러 개의 Docker 플러그인이 있습니다. 클라우드 제공 상표 문제의 체크 상자를 사용하여 Docker를 선택하십시오.
  • 아래쪽에서 재부팅 없이 설치 를 클릭합니다.
  • 플러그 인이 다운로드되어 설치됩니다.완료되면 링크를 클릭하여 첫 페이지로 돌아갑니다.
  • 이제 Jenkins 서버를 Docker 이미지를 생성하도록 구성할 수 있습니다.

    Docker 에이전트 추가


    플러그인을 설치한 후에는 Docker 컨테이너를 시작하는 방법을 구성할 수 있습니다.설정은 플러그인 에이전트가 어떤 Docker 이미지를 사용하고 용기를 실행하고 어떤 Docker 수호 프로세스를 기반으로 하는지 알려 줍니다.
    이 플러그인은 Docker를 클라우드 공급자로 보고 구축이 필요할 때 용기를 회전시킵니다.
    작업:플러그인 구성
  • 이 단계에서는 Docker 호스트/데몬과 통신하도록 플러그인을 구성합니다.
  • Manage Jenkins를 다시 선택합니다.
  • 주요 Jenkins 설정에 액세스할 구성 시스템을 선택합니다.
  • 밑에'새 구름 추가'라는 드롭다운 목록이 있습니다.목록에서 Docker를 선택합니다.
  • Docker 호스트 URI는 Jenkins가 프록시 컨테이너를 시작하는 곳입니다.이 예에서는 Jenkins를 실행하는 것과 같은 데몬을 사용하지만 두 데몬을 분리하여 확장할 수 있습니다.URL tcp 입력://[[HOST IP]:2345
  • 테스트 연결을 사용하여 Jenkins가 Docker 데몬과 대화할 수 있는지 확인합니다.반환된 Docker 버전 번호가 표시됩니다.
  • 호스트 IP 주소는 구축 에이전트/Docker 호스트의 IP입니다.
    작업:Docker 프록시 템플릿 구성
  • Docker 프록시 템플릿은 빌드 프로세스를 처리하는 컨테이너입니다.
  • Docker 프록시 템플릿을 클릭합니다.그런 다음 Docker 템플릿을 추가합니다.컨테이너 옵션을 구성할 수 있습니다.
  • 에이전트의 라벨을 docker 에이전트로 설정합니다.Jenkins builds는 우리가 정의한 Docker 에이전트를 통해 구축해야 함을 나타냅니다.
  • Docker 이미지에 대한 Benhall/dind jenkins 프록시 사용: v2.이 이미지는 Docker 클라이언트를 구성하여 https://hub.docker.com/r/benhall/dind-jenkins-agent/
  • 에서 가져옵니다.
  • 컨테이너 설정에서 [볼륨] 텍스트 상자에/var/run/docker를 입력합니다.양말:/var/run/docker.양말이것은 우리의 구축 용기와 호스트의 통신을 허용한다.
  • 연결 방법의 경우 Connect with SSH를 선택합니다.이 이미지는 Jenkins SSH 종속 이미지를 기반으로 하며 기본 Inject SSH 키가 인증을 처리합니다.
  • 설정되었는지 확인합니다.
  • 저장을 클릭합니다.
  • Jenkins는 이제 필요할 때 컨테이너로 구축 에이전트를 시작할 수 있습니다.

    구축 항목 작성


    이 단계에서 새로운 프로젝트를 만들었습니다. 젠킨스는 우리의 새로운 에이전트를 통해 프로젝트를 구축할 것입니다.프로젝트 소스 코드는 https://github.com/thebleshbanz/ssm_docker.git에 있습니다.저장소에는 Dockerfile이 있습니다.Docker 이미지를 생성하는 방법에 대한 설명을 정의합니다.젠킨스는 우리의 프로젝트가 어떻게 구축되었는지 알 필요가 없다.
    작업:새 작업 만들기
  • 젠킨스 계기판에서 새로운 작업을 만듭니다.
  • 업무에 우호적인 이름을 지어 주었다. 예를 들어 나의 젠킨스가 시범을 보이고 자유형 종목을 선택한 다음에 OK를 눌렀다.
  • 구문은 Docker에 액세스할 수 있는지 여부에 따라 달라집니다."이 프로젝트를 실행할 수 있는 위치 제한"을 사용하여 구성된 Docker 프록시에 대한 레이블을 정의할 수 있습니다.[태그 표현식]을 docker agent로 설정합니다.'탭은 노드가 없고 클라우드 서비스가 있습니다' 라는 설정이 있어야 합니다.
  • 오류 메시지를 보았을 때, 이 분배와 일치하는 에이전트/클라우드가 없습니다.부두 대리가 아니라 선장님이라고요?Docker 플러그인과 Docker 에이전트가 활성화되지 않았습니다.시스템 설정 옵션을 되돌려주고 이 두 콤보 상자를 사용합니다.
  • 저장소 유형을 Git로 선택하고 저장소를 https://github.com/thebleshbanz/ssm_docker.git로 설정합니다.
  • 우리는 현재 구축 절차를 추가할 수 있습니다. 아래 목록에서 새로운 구축 절차를 추가할 수 있습니다.ExecuteShell을 선택합니다.
  • 어떻게 구축하는 논리가 Dockerfile에서 지정되었기 때문에 Jenkins는build을 호출하고 우호적인 이름을 지정하기만 하면 됩니다.
  • 이 예에서는 다음 명령을 사용합니다.
    ls
    docker info
    docker build -t katacoda/jenkins-demo:${BUILD_NUMBER} .
    docker tag katacoda/jenkins-demo:${BUILD_NUMBER} katacoda/jenkins-demo:latest
    docker images
    
    첫 번째 단계는 생성할 디렉터리의 모든 파일을 보여 줍니다.docker build을 호출할 때 Jenkins build 번호를 이미지 태그로 사용합니다.이렇게 하면 Docker 이미지를 버전화할 수 있습니다.우리는 또한 최신 버전으로 구축을 표시한다.
    이 때, 또는 다른 단계에서, 그림을 집중식 docker 등록표에 업로드하는 docker 전송을 실행할 수 있습니다.
  • 우리의 건설은 현재 완성되었다.저장을 클릭합니다.
  • 건설 프로젝트


    Git 저장소를 기반으로 Docker 이미지를 구축하는 설정된 작업이 있습니다.다음 단계는 테스트와 시도다.
    작업:구축
    왼쪽에서 지금 구문을 선택합니다.메시지 (pending Waiting for next available executor) 를 포함하는 구축 계획을 보실 수 있습니다.
    백그라운드에서 Jenkins는 컨테이너를 시작하고 SSH를 통해 연결합니다.Docker 에이전트를 구성하는 데 시간이 걸릴 수 있습니다.'(pending Jenkins에 docker 에이전트 레이블이 없음)'오류는 Jenkins가 docker 에이전트가 시작되기를 기다리는 동안 발생합니다.
    사용 가능
     docker logs --tail=10 jenkins
    
    이것은 약간의 시간을 써서 완성하는 것이 정상이다.

    콘솔 출력 보기


    구문이 완료되면 Docker CLI Docker images를 사용하여 이미지와 태그를 볼 수 있습니다.
    Docker 이미지에는 작은 HTTP 서버가 내장되어 있습니다.다음과 같은 방법으로 시작할 수 있습니다.
    docker run -d -p 80:80 katacoda/jenkins-demo:latest
    
    cURL 을 사용하면 다음과 같은 서버 응답을 볼 수 있습니다.
    curl host01
    
    Jenkins는 대시보드를 통해 제작된 콘솔 출력을 제공합니다.아래에서 액세스할 수 있어야 합니다.
    https://[[HOST_SUBDOMAIN]-8080-[[KATACODA_HOST]].환경논밭 한 뙈기.com/job/Katacoda%20Jenkins%20Demo/1/console
    프로젝트를 재구성하면 버전 2가 만들어진 그림을 볼 수 있고: latest 표시가 다시 부착됩니다.

    좋은 웹페이지 즐겨찾기