인프런 커뮤니티 질문&답변

이카루스님의 프로필 이미지
이카루스

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

SSH + Docker가 설치되어 있는 VM(컨테이너) 사용하기 (Updated: 2023-06-01)

SSH 환경 Set-Up 및 TEST 시..(강사님 제발 좀...)

작성

·

927

·

수정됨

1

위(①)와 같이 docker images는 잘 결과가 나옴에도 불구하고 status 명령 시 ②과 같이 "inactive"로 나옵니다.

 

그래서 강의 처럼 "systemctl start docker"를 실행 하였으나...

위와 같이 안되었습니다.

 

강사님 정말 부탁드리는데요....

왜 이 강의만... 강의대로 환경 세팅 후 실행을 했을 때 에러가 자꾸 나와서 그와 관련 에러 해결에 혼자서 따로 1시간 이상씩 구글링을 해야 하나요?

 

솔직히 스트레스 받습니다.

강의 하단부에 "Windows ) SSH 서버 (with 도커) ~" 두 가지 방법 모두 해보았습니다. 그래도 저래요...

 

강사님 제발 좀... 강의를 만드실 때 여러 환경에 따른 사전 에러나는 것을 알아보시고 안내가 자세히 되어 있어야죠...

 

하루 종일 이거 issue trouble shooting 중입니다....

docker images를 했을 때 image list만 나오면 그럼 inactive여도 상관 없는 건가여? 이런거 강의 때 말씀 안해주셨자나요...

 

다음 강의에서 시키는 대로 해보면... 실제 ssh 에 파일이 '0'개 옮겨 졌다고 나옵니다.(④)

Docker Jenkins에는 실제 target 폴더에 hello-world.war가 생성이 되었고요....

 

Jenkins > 시스템 설정 > Publish Over SSH > Test Connection 시도 시 정상적으로 success 떴습니다.

 

도대체... 왜... 파일이 0개 전송되며... system status docker 상태가 inactive이며... 왜 systemctl start docker 해도 안되나여?

 

강사님이 수강생이여도... 화가 나지 않을까여? 하루 왠종일 이거 trouble shooting 중이여면요.

답변 2

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

조금 전에 새로운 Windows 환경에서 Docker Desktop을 실행한 결과를 공유해 드립니다. 새롭게 다운로드 받은 Windows용 Docker Desktop의 버전은 다음과 같ㅎ습니다.

Docker Desktop 4.18.0 (104112)

Client Version: 20.10.22, API version: 1.41, Go version: go1.18.9

Server Server: 20.10.24, API version: 1.41 (minimum version 1.12), Go version: go1.19.7

우선 아래 2개의 스크립트 모두 정상 작동 되고 있음을 확인하였습니다.

  • Windows) SSH 서버 (with 도커) 실행 명령어 (방법1)

    • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init

  • Windows) SSH 서버 (with 도커) 실행 명령어 (방법2, 위 명령어로 실행되지 않을 경우)

    • docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init

만약, 작업하실 때, 방법2에 해당하는 DooD 방식으로 기동하셨다면, “ssh root@localhost -p 10022” 로 접속하셨을 때, systemctl status docker에서는 inactive 상태가 맞습니다. 이유는 영상에서도 설명 드린 것처럼 DooD 방식은 Host PC의 Docker를 공유하여 사용하는 방식이기 때문에, docker images 명령어나 docker ps, docker run 등의 명령어는 정상적으로 작동하나 systemctl 명령어로 실행 상태를 확인해 보면, inactive 상태가 나오게 됩니다. 즉, ssh로 접속한 docker-server에서는 docker 엔진을 직접 기동하는 것이 아니라, Host PC인 윈도우 서버의 docker 를 공유해서 쓰고 있기 때문에, 상태는 inactive이지만, docker 자체는 Host PC의 도커이기 때문에 사용이 가능한 상태입니다.

올려주신 이미지에는 Jenkins의 실행 결과도 OK로 나왔기 때문에, Jenkins의 Publish Over SSH 설정에서 지정된 docker-server의 디렉토리에 hello-world.war 결과물이 저장되었을 거라 생각되는데, 만약 파일이 전송되는데에 실패하였다면, OK 상태가 아니라, Unstable 상태로 표시 되어야 합니다. 파일이 어디에 복사되었는지 확인하기 어려우시면, Jenkiins에서 해당 Item의 설정 부분을 다시 올려주시면 확인해 보도록 하겠습니다.

추가 질문사항이 있으시면 다시 글 남겨 주세요.

감사합니다.

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

먼저, 원할한 강의 진행이 되지 못한점에 대해 사과의 말씀드립니다.

문의 하신 내용에 가장 큰 오류는, jenkins쪽의 문제가 아니라, 빌드 된 결과물(hello-world.war)이 SSH를 통해 docker-server 서버에 전달되지 않는 것 같습니다. 여러 가지 문제가 있을 수 있겠지만, docker 기동 시 SSH 서버가 정상적으로 기동 안된게 가장 큰 문제인 것 같습니다. windows에서 사용할 수 있는 Docker 이미지 및 올려드렸던 스크립트에 대한 오류는 저희쪽에서도 검토중입니다. 우선 저희쪽에서 사용하는 PC에서는 문제가 발생되지 않았기에 스크립트 및 이미지를 공유해 드렸었는데, 실행되지 않는 환경이 있는 것 같습니다. 최신 버전으로 다시한번 업데이트 해 드리겠습니다.

감사합니다.

이카루스님의 프로필 이미지
이카루스

작성한 질문수

질문하기