AWS EC2, docker를 활용한 ubuntu18.04 개발환경의 구축 2 - VS Code에 연결하기

@developer/takealittle.time·2024년 11월 1일
0

Jungle

목록 보기
19/21

* 이전 글에 이어지는 내용 입니다.

🏁 목표

  • 이전 글에서 AWS EC2에 docker를 설치 해 ubuntu18.04 환경을 구축하는 데까지 알아보았습니다.

  • 이번에는 이렇게 구축한 ubuntu18.04 환경을 Local 컴퓨터의 VS Code에서 실행할 수 있도록 설정하는 방법에 대해 알아봅시다.

00. 들어가며

  • 이전 글에서 설명 했듯이,
    아래 내용을 통해 우리는 위와 같은 형태의 개발 환경을 구축합니다.
    본인이 사용 중인 EC2 에 Docker를 설치하고, 여기에 Ubuntu18.04 이미지를 이용해 컨테이너를 적재합니다.

  • 우리는 딱 ‘버전 이슈(종속성 에러)의 방지’를 위해 Docker를 통해 Ubuntu18.04 환경을 이용할 뿐 입니다.

  • 이번 글에서는 EC2 내 Docker 안에서 돌고있는 Ubuntu18.04 컨테이너에 ssh 연결을 위해 포트 번호를 부여한 뒤 포트를 열어주고,
    포트 포워딩 (Port Forwarding)을 이용 해 클라이언트로부터 특정 포트 번호로 요청이 들어오면 이를 통해 컨테이너로 원격 연결이 가능하도록 해주는 방법론을 담았습니다.

01. ubuntu18.04 dockerfile 수정

  • 우선, 첫 번째로 할 일은 EC2 환경에서 dockerfile을 수정해주는 일 입니다.

  • 본인 EC2에 접속 해 줍니다.

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
  • dockerfile을 수정하고 새로 빌드할 것이기 때문에, 이미 빌드한 'ubuntu18.04' 컨테이너가 있을 경우, 이를 중지 하고 삭제 해 줍니다.
sudo docker stop -d --name ubuntu18.04 ubuntu18.04
sudo docker rm ubuntu18.04
  • 이전 글 그대로 설치를 해 오신 분들이라면, home 디렉토리에 ubuntu18.04 디렉토리가 존재 할 겁니다.
    해당 디렉토리로 이동 합니다.
cd ~
cd ubuntu18.04
  • 해당 디렉토리를 살펴보면, 이 디렉토리 안에 dockerfile 문서가 존재할 겁니다. (ls명령어로 확인할 수 있습니다.)
  • dockerfile을 nano 편집기에서 열어줍니다.
nano dockerfile
  • nano 편집기가 설치가 안되어 있어 열리지 않는 경우,
    sudo apt install nano 명령어를 입력 해 설치 해 준 후 열어주면 됩니다.

  • 이전 글을 그대로 따라오신 분들이라면, 아마 아래와 같은 내용이 들어가 있을 겁니다.

# Ubuntu 18.04 이미지를 베이스로 사용
FROM ubuntu:18.04
# apt 패키지 목록 업데이트 및 기본 패키지 설치
RUN apt-get update && apt-get install -y \
    curl \
    vim \
    git \
    sudo \
    net-tools \
    iputils-ping \
    locales \
    && apt-get clean
# 로케일 설정 (UTF-8 로케일 설정)
RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
# 사용자 {사용자 이름} 추가 및 sudo 권한 부여
RUN useradd -ms /bin/bash 여기 사용자 이름 && adduser 여기 사용자 이름 sudo
# root 비밀번호 변경 (원하는 비밀번호로 변경)
RUN echo "root:여기 원하는 패스워드" | chpasswd
# {사용자 이름}의 사용자 비밀번호 변경 (원하는 비밀번호로 변경)
RUN echo "여기 사용자 이름:여기 원하는 패스워드" | chpasswd
# 홈 디렉토리로 워킹 디렉토리 설정
WORKDIR /home/여기 사용자 이름
# {사용자 이름}으로 스위치하여 bash 사용
USER 여기 사용자 이름
# 컨테이너 종료 방지: 무한 대기 프로세스 실행(docker는 컨테이너 내부에서 돌아가는 프로세스가 없으면 스스로 컨테이너 종료 시킴, 따라서 무한대기 프로세스 생성)
CMD ["tail", "-f", "/dev/null"]
  • 해당 내용을 아래와 같이 수정합니다.
    주로 ssh 연결을 위해 22번 포트를 열어주는 내용이 추가 되었습니다.
# Ubuntu 18.04 이미지를 베이스로 사용
FROM ubuntu:18.04
# apt 패키지 목록 업데이트 및 기본 패키지 설치
RUN apt-get update && apt-get install -y \
    curl \
    vim \
    git \
    sudo \
    net-tools \
    iputils-ping \
    locales \
    openssh-server\
    && apt-get clean
# 로케일 설정 (UTF-8 로케일 설정)
RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
# 사용자 {사용자 이름} 추가 및 sudo 권한 부여
RUN useradd -ms /bin/bash 여기 사용자 이름 && adduser 여기 사용자 이름 sudo
# root 비밀번호 변경 (원하는 비밀번호로 변경)
RUN echo "root:여기 원하는 패스워드" | chpasswd
# {사용자 이름}의 사용자 비밀번호 변경 (원하는 비밀번호로 변경)
RUN echo "여기 사용자 이름:여기 원하는 패스워드" | chpasswd

# SSH 서버 설정
RUN mkdir /var/run/sshd
RUN echo 'choiminkyu ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# SSH 접속 시 비밀번호 인증을 허용하도록 설정
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/ss>

# 홈 디렉토리로 워킹 디렉토리 설정
WORKDIR /home/여기 사용자 이름

# 포트 22를 열어 SSH 접속 허용
EXPOSE 22

# SSH 서버 실행 및 컨테이너 종료 방지: 무한 대기 프로세스 실행
CMD ["/usr/sbin/sshd", "-D"]
  • 수정이 끝났다면, ctrl+x를 누르고 Y를 누르고 enter 해 줍니다.

  • 이렇게 하면, ssh 연결을 위한 dockerfile 준비는 끝났습니다.


02. 인바운드 규칙 편집

  • 우리는 포트 포워딩(Port Forwarding)을 이용 해 외부로부터 특정 포트 번호로 요청을 받아 이를 EC2 내 docker 위에서 돌아가고 있는 ubuntu18.04 컨테이너로 연결 해 줄 것 입니다.

  • 이 때, 한 가지 고려해야 할 사항이 있습니다. Amazon에서 제공하는 EC2 서비스는 보안을 위해 사용자가 설정해주지 않는 한 접근을 차단하고 있습니다.

  • EC2에서 우리가 이용 할 포트 번호를 보안 그룹 설정에서 열어주어야 합니다.
    크게 어렵지 않습니다.

  • EC2 페이지에서 본인이 사용 중인 인스턴스 화면으로 들어가 줍니다.
    https://ap-northeast-2.console.aws.amazon.com/ec2/home

  • 해당 인스턴스의 보안 탭에서 위와 같이 보안 그룹 링크를 클릭 해 접근 해 줍니다.
  • 해당 탭에서 인바운드 규칙 편집을 클릭 해 줍니다.
  • 규칙 추가 버튼을 클릭하고, 포트 범위에 원하는 포트 번호를 적어 주시면 됩니다. 0~65535 숫자를 입력 해 주시면 되는데, 낮은 포트 번호일 수록 시스템이 사용 중일 수 있으니 랜덤한 수를 추천 드립니다.
    ex) 4987
    이 포트 번호를 기억하고 있어야 합니다!

03. 컨테이너 빌드, 실행하며 포트 포워딩 설정

  • 다시 쉘 화면으로 돌아옵시다. EC2에 연결된 상태 이어야 합니다.

  • 수정된 dockerfile을 기반으로, ubuntu18.04 컨테이너를 다시 빌드 합니다.

sudo docker build -t ubuntu18.04
  • 이제 해당 컨테이너를 실행 할 겁니다. 이 때, 위의 인바운드 설정에서 열어 준 포트 번호로 포트 포워딩을 설정 할 것입니다.
sudo docker run -d -p {설정한 포트번호}:22 --name ubuntu18.04 ubuntu18.04

ex) 만약, 설정한 포트 번호가 4987 이라면

sudo docker run -d -p 4987:22 --name ubuntu18.04 ubuntu18.04
  • 이렇게 포트포워딩까지 설정 해 컨테이너를 시작했다면, 이제 연결 과정은 사실상 끝났습니다.

  • 로컬 컴퓨터(본인 컴퓨터)에서 VS Code를 열어 줍시다.

  • Ctrl+Shift+P 단축키를 입력하거나, 화면 상단의 검색 창을 클릭 하고, >Remote-SSH:호스트에 연결을 접근 해 줍니다.

  • SSH 호스트 구성을 클릭해주고, 아래와 같이 C:\Users\user\.ssh\config에 접근 해 줍니다.

  • 해당 문서에 아래와 같은 내용을 추가하고 저장합니다.

  • 다시 상단의 검색 창을 열어주고, >Remote-SSH:호스트에 연결을 클릭 합니다.

  • ubuntu18.04 탭이 위와 같이 생겼을 겁니다. 이 탭을 클릭 하고, dockerfile을 작성하며 썼던 패스워드를 입력 해 원격 연결을 할 수 있게 됩니다.


04. pem key 설정 (optional)

  • 작성 중,,,

++

* 리눅스 환경에서의 ssh_config 문서

  • ubuntu 환경에서 루트 디렉토리 / 경로로 간 다음,
    /etc/ssh 디렉토리로 들어가면 ssh_config 문서를 확인할 수 있습니다.
  • 시작 폴더에서 상위로 두 디렉토리 나간 다음, etc/ssh 폴더에서 ls 명령을 내리면 위와 같이 ssh와 관련된 문서들을 확인할 수 있습니다.
// cat 명령으로 ssh_config 문서의 내용을 확인 해보자.
cat ssh_config
  • 아래와 같이 이 문서에서 ssh와 관련된 설정들을 관리할 수 있습니다.
profile
능동적으로 사고하고, 성장하기 위한. 🌱

0개의 댓글

관련 채용 정보