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

hyun님의 프로필 이미지
hyun

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

실습18) Jenkins Slave Node에서 빌드하기

도커 터널링 접속과 ssh 접속

해결된 질문

작성

·

401

1

8분 50초 쯤에서 jenkins master는 ssh를 통해서 접속하는 게 아니라 도커 터널링으로 접속한다고 하셨는데

도커 터널링으로 접속할 때와 ssh로 접속할 때의 구분은 어떻게 하는건가요..? 노드는 ssh로 접속하고 마스터는 ssh로 접속하시는데 이유가 있는걸까요??

답변 2

1

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

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

실행 된 Docker에 exec -it 옵션을 이용해서 추가적인 명령을 전달할 수 있는 데, 이때 shell 명령어를 전달함으로써, Terminal에서도 Docker Container 내부로 명령어를 전달할 수 있습니다. 터널링이라고 표현했던 것은 이렇게 Terminal을 통해 명령어를 전달할 수 있는 상태를 말한 것이고, Host PC(윈도우 등)에서 Docker Container에 접속하여 명령어를 실행할 수 있는 상태라고 설명드렸습니다.

SSH는 이렇게 Docker Container에 접속하는 것 뿐만아니라, SSH Server가 설치되어 있는 서버에 SSH Client 도구를 이용하여 접속해서, 명령어를 실행하는 것을 말합니다.

결과적으로 2개는 동일한 작업을 처리할 수 있지만, 기본적인 Docker Container에서 제공되는 명령어로 Docker Container 내부에 들어가서 작업하는 하는 것과 SSH Client로 접속해서 사용하는 것에서 차이가 있습니다.

docker exec -it 컨테이너ID bash 명령어로 Docker Container 내부로 접속하기 위해서는 Container에서 bash 라는 명령어가 실행될 수 있어야 합니다. 그리고 SSH Client로 접속하기 위해서는 SSH Server가 Container 내부에서 실행되고 있어야 합니다. 하나의 PC에서 다른 PC(물리적인 PC 또는 VM)에 접속해서 명령어를 사용할 때는 SSH를 통해 인증을 거친 사용자에게만 작업을 허가하는 것이 일반적입니다. 반면에 Docker Container의 Bash 쉘에 직접 명령어는 전달하는 것은 인증없이도 사용할 수 있기 때문에, 적절하지 않을 수 있습니다. 다만 강의에서는 자신만의 환경을 구축하고 실습하는 상황이기 때문에, Docker Container를 통해 명령어를 직접 전달하거나 SSH를 통해 접속하거나 상관없이 같이 작업을 할 수 있다고 보시면 좋을 것 같습니다.

감사합니다.

hyun님의 프로필 이미지
hyun
질문자

감사합니다 !

0

안녕하세요, 인프런 AI 인턴입니다.

도커 터널링으로 접속한다는 것은 SSH(Secure Shell) 대신, 도커 자체가 제공하는 네트워킹 기능을 통해 서비스들 간의 연결을 설정한다는 의미입니다. Docker 컨테이너는 도커 데몬과 통신하기 위해 Unix 소켓이나 네트워크 인터페이스를 사용할 수 있으며, 이를 통해 장치 간의 연결을 안전하게 할 수 있습니다.

SSH로 접속한다는 것은 보안된 채널을 통해 서버에 원격으로 로그인하고 커맨드를 실행하는 방식을 말합니다. Jenkins master를 도커 터널링으로 접속하고, 노드는 SSH로 접속하는 이유는, 노드의 경우 일반적인 서버가 될 수도 있어서 SSH 접속이 자연스럽지만, 마스터는 Jenkins 서비스 자체를 운영하는 컨테이너이기 때문에 Docker 내의 네트워킹 기능을 활용하는 것이 더 효율적일 수 있습니다.

마스터 컨테이너와 노드 사이의 통신 방법이 다른 것은 각각의 목적과 환경에 맞게 최적화하기 위함입니다. 도커 컨테이너 내에서는 도커의 기능을 최대한 활용하는 것이 관리나 성능 측면에서 이점을 가질 수 있고, 전통적인 서버 또는 다른 환경에서는 일반적으로 잘 알려진 SSH를 통한 접속이 더 적합할 수 있습니다.

hyun님의 프로필 이미지
hyun

작성한 질문수

질문하기