공식홈페이지에 [Creative Commons Attribution-Share Alike 4.0 license] 라고 젠킨스 자체를 저작자표시 동일조건 변경허락을 한다고 나와있네요. mit 라이센스만 보다가 조금 생소해서 검색해보니 젠킨스를 변형해도 되나 라이센스를 유지해서 사용가능하다고 보면 되겠네요.
3. Jenkins 노드 내에서 Docker 명령을 실행하려면docker:dind다음 명령을 사용하여 도커 이미지:
①
(임의) 이미지 실행에 사용할 도커 컨테이너 이름을 지정합니다.기본적으로 Docker는 컨테이너의 고유한 이름을 생성합니다.
②
(옵션) 도커 컨테이너(도커 이미지의 인스턴스)가 셧다운되면 자동으로 삭제됩니다.
③
(임의) 도커 컨테이너를 백그라운드에서 실행합니다.이 인스턴스는 나중에 실행함으로써 중지할 수 있습니다. docker stop jenkins-docker.
④
현재 Docker에서 Docker를 실행하려면 권한이 있어야 합니다.이 요건은 새로운 Linux 커널 버전에서는 완화될 수 있습니다.
⑤
이는 이전 단계에서 작성된 네트워크에 해당합니다.
⑥
도커 컨테이너의 도커를 호스트명으로 사용할 수 있도록 합니다.docker의 범위 내에서jenkins네트워크.
⑦
도커 서버에서 TLS를 사용할 수 있습니다.권한 있는 컨테이너를 사용하기 때문에 아래에 설명된 공유 볼륨을 사용해야 하지만 이 방법을 사용하는 것이 좋습니다.이 환경 변수는 도커 TLS 인증서가 관리되는 루트 디렉터리를 제어합니다.
⑧
를 매핑합니다./certs/client컨테이너 내부의 디렉토리를 Docker 볼륨으로 이동합니다.jenkins-docker-certs상기와 같이 작성했습니다.
⑨
를 매핑합니다./var/jenkins_home컨테이너 내부의 디렉토리를 Docker 볼륨으로 이동합니다.jenkins-data이렇게 하면 이 Docker 컨테이너의 Docker 데몬에 의해 제어되는 다른 Docker 컨테이너가 Jenkins에서 데이터를 마운트할 수 있습니다.
⑩
(임의) 호스트머신의 도커 데몬 포트를 표시합니다.이것은 다음 명령을 실행하는 데 유용합니다.docker이 내부 도커 데몬을 제어하기 위한 명령을 호스트 시스템에서 사용합니다.
⑪
그docker:dind이미지 그 자체입니다.이 이미지는 실행 전에 다음 명령을 사용하여 다운로드할 수 있습니다. docker image pull docker:dind.
⑫
도커 볼륨용 스토리지 드라이버.서포트되고 있는 옵션에 대해서는, 「도커 스토리지드라이버"Docker storage drivers"」를 참조해 주세요. ( ※ 볼륨 선언을 통해 도커 안에 경로로 도커 밖의 경로를 선언해서 접근할 수 있다는 이야기입니다. )
주의:위의 명령어 스니펫을 복사하여 붙여넣을 수 없는 경우 주석 없이 다음 버전을 복사하여 붙여넣어보십시오.
컨테이너가 멈추면 항상 재시작하십시오.수동으로 중지된 경우 Docker 데몬이 재시작되거나 컨테이너 자체가 수동으로 재시작될 때만 재시작됩니다.
③
(선택사항) 현재 컨테이너를 백그라운드에서 실행하고("분리" 모드) 컨테이너 ID를 출력합니다.이 옵션을 지정하지 않으면 이 컨테이너의 실행 중인 Docker 로그가 터미널 창에 출력됩니다.
④
이 컨테이너를 에 접속합니다.jenkins네트워크를 정의합니다.그러면 이전 단계의 Docker 데몬을 호스트 이름을 통해 이 Jenkins 컨테이너에서 사용할 수 있습니다.docker.
⑤
에 의해 사용되는 환경변수를 지정합니다.docker,docker-compose이전 단계에서 도커 데몬에 접속하기 위한 도커 도구 및 기타 도커 도구.
⑥
현재 컨테이너의 포트 8080을 호스트 시스템의 포트 8080에 매핑(즉, "퍼블리시")합니다.첫 번째 숫자는 호스트의 포트를 나타내고 마지막 숫자는 컨테이너의 포트를 나타냅니다.따라서, 당신이 지정한 경우,-p 49000:8080이 옵션을 사용하려면 포트 49000을 통해 호스트 시스템의 Jenkins에 액세스해야 합니다.
⑦
(임의) 현재 컨테이너의 포트 50000을 호스트머신의 포트 50000에 매핑합니다.이것은, 1개 이상의 착신 Jenkins 에이전트를 다른 머신에 셋업 해, 다음에, 다음의 머신과 상호 작용하고 있는 경우에만 필요합니다.jenkins-blueocean컨테이너(Jenkins "컨트롤러").인바운드 Jenkins 에이전트는 기본적으로 TCP 포트 50000을 통해 Jenkins 컨트롤러와 통신합니다.Jenkins컨트롤러에서 보안 페이지를 통해 이 포트 번호를 변경할 수 있습니다.Jenkins 컨트롤러의인바운드 Jenkins에이전트의TCP 포트를 51000(예를 들어)으로 변경하는 경우 Jenkins를 다시 실행해야 합니다(이를 통해).docker run …command)를 사용하여 이 "command" 옵션을 지정합니다.--publish 52000:51000마지막 값은 Jenkins 컨트롤러의 변경된 값과 일치하며 첫 번째 값은 Jenkins 컨트롤러를 호스트하는 머신의 포트 번호입니다.착신 Jenkins 에이전트는 해당 포트(이 예에서는 52000)의 Jenkins 컨트롤러와 통신합니다.WebSocket에이전트에는 이 설정이 필요하지 않습니다.
⑧
를 매핑합니다./var/jenkins_home컨테이너의 디렉토리 이름을 사용하여Docker볼륨으로 이동합니다.jenkins-data매핑하는 대신/var/jenkins_home디렉토리를 도커 볼륨에 매핑할 수도 있습니다.또, 이 디렉토리를 머신의 로컬 파일 시스템의 디렉토리에 매핑할 수도 있습니다.예를 들어 옵션 지정 --volume $HOME/jenkins:/var/jenkins_home컨테이너의 맵을 만듭니다./var/jenkins_home로의 디렉토리jenkins내의 서브 디렉토리$HOME로컬 머신의 디렉토리(일반적으로 다음과 같습니다)/Users/<your-username>/jenkins또는/home/<your-username>/jenkins. 이 소스 볼륨 또는 디렉토리를 변경하면 에서 볼륨이docker:dind위의 컨테이너를 이에 맞게 업데이트해야 합니다.
⑨
를 매핑합니다./certs/client이전에 작성한 디렉토리jenkins-docker-certs용량.이것에 의해, 도커 데몬에의 접속에 필요한 클라이언트 TLS 증명서는, 에 의해서 지정된 패스로 사용할 수 있게 됩니다.DOCKER_CERT_PATH환경 변수입니다.
⑩
이전 단계에서 작성한 도커 이미지의 이름.
※ 주의:위의 명령어 스니펫을 복사하여 붙여넣을 수 없는 경우 주석 없이 다음 버전을 복사하여 붙여넣어보십시오.
Jenkins 프로젝트는 윈도우즈 컨테이너 이미지가 아닌 리눅스 컨테이너 이미지를 제공합니다.Docker for Windows 설치가 실행되도록 구성되어 있는지 확인합니다.Linux Containers보다는Windows ContainersLinux컨테이너로의 전환 순서에 대해서는, 도커 메뉴얼을 참조해 주세요.실행하도록 구성되면Linux Containers순서는 다음과 같습니다.
※ 윈도우에 설치해 봅시다. 공식 홈페이지에 설명 자체는 잘되어 있네요. 로컬 폴더와 도커 이미지에서 접근할 경로 설정만 변경해서 사용하면 될 것 같습니다. 사전에 C:/workspace/jenkins/data, C:/workspace/jenkins/certs 를 원하시는 폴더로 먼저 만드시고 경로를 도커 이미지에서 사용한다고 보시면 됩니다.
참고 ) --volume="C:/workspace:/root/workspace" 이런식으로 변경해 주시면 됩니다.
도커 이미지 받는 부분에 대한 공홈 내용을 보셨다면 이제 실제 윈도우 PC에 설치를 해보겠습니다.
참고로 도커 허브는 도커이미지를 보관하는 기간이 있기 때문에 이글을 보실때는 제가 설치한 버전의 이미지가 사용할 수 없는 경우도 있을 것입니다. 그래서 제목에 이글을 작성한 달을 적어 놓았으니 참고 바랍니다.
# 윈도우 파워셀에서
> docker network create jenkins
※ 참고로 에러 메시지가 [error during connect: In the default daemon configuration on Windows]나오면 윈도우 도커를 실행해주지 않아서 발생한것입니다. 기본 도커는 로컬에 도커데몬서버가 실행되고 우리가 도커 명령을 치면 도커데몬을 통해 도커 허브에 연결한다고 알고 계시면 됩니다.
저는 도커에 연결할 폴더를 [C:/dev/jenkins/certs, C:/dev/jenkins/data] 로 예정입니다. 로컬폴더를 먼저 만들시기 바랍니다.
도커는 이미지가 없을 경우 실행명령을 하면 이미지를 찾아보고 없을경우 내려받아서 실행하는 것이 기본입니다. 하지만 실행시 이미지를 못 찾거나 원하는 이미지를 사용해서 컨테이너를 작성을 원할 경우는 이미지를 다운 받아서 컨테이너를 싱행하는 방식으로 하면 됩니다. 우선 공홈에 나와있는 방식으로 진행해보겠습니다.