발전하는 춘배

[원고 / GCP, Docker, Code Server] GCP VM에 코드서버 띄우기 본문

.원고

[원고 / GCP, Docker, Code Server] GCP VM에 코드서버 띄우기

춘배0 2026. 3. 6. 18:33

GCP VM 인스턴스 생성

https://velog.io/@2wndrhs/code-server%EB%A1%9C-%EC%82%AC%EC%A7%80%EB%B0%A9%EC%97%90%EC%84%9C-%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0-1-GCP-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%83%9D%EC%84%B1

 

code-server로 사지방에서 코딩하기 - 1 (GCP 인스턴스 생성)

code-server로 사지방에서 코딩하기

velog.io

근데 여기서 너무 과한 걸 쓰는 거 같아서

e2-medium (vCPU 2개, 메모리 4GB)

저장용량 10GB 썼음. 한달에 30몇달러

아근데 무료크레딧 300달러라 아껴 쓰려고 이렇게 한거였는데 나중에 보니까 90일 기간도 있었음. 아 이래서 걍 가격 맞춰서 리소스 좋은 거 쓴거구나 쩝

 

https://velog.io/@2wndrhs/code-server%EB%A1%9C-%EC%82%AC%EC%A7%80%EB%B0%A9%EC%97%90%EC%84%9C-%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0-2-GCP-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%83%9D%EC%84%B1

 

code-server로 사지방에서 코딩하기 - 2 (docker로 code-server 실행)

code-server로 사지방에서 코딩하기

velog.io

 

도커 설치

]https://blog.dalso.org/google-cloud-platform-2/nas-project/8618

 

[GCP]VM(ubuntu OS) Docker 설치하기.(portainer 추가) - 달소씨의 하루

Google Cloud Platform을 이용한 NAS 시스템 구축 의 세번째 글입니다. 생각보다 빠르게 진행되고있네요. 물론, 지금까지는 어려운부분도 없는 기본셋팅 수준이였고 제대로 보여줄만한건 나오지 않았

blog.dalso.org

도커 쓴 이유: GPT형님이 (추천)해줌

1️⃣ Docker로 code-server 실행 (추천)

장점 👍

  • 환경 재현성: VM 새로 만들어도 컨테이너만 다시 띄우면 동일 환경
  • 관리 쉬움: 삭제 / 재설치 / 업그레이드 간단
  • 포트 / 볼륨 관리 깔끔
  • 나중에 Nginx, SSL, 다른 서비스랑 조합하기 쉬움

예시:

 
docker run -d \
--name code-server \
-p 8080:8080 \
-v "$HOME/.config:/home/coder/.config" \
-v "$HOME/project:/home/coder/project" \
-e PASSWORD="yourpassword" \
codercom/code-server:latest
 

GCP에서는 보통:

  • VM 생성
  • Docker 설치
  • 위 컨테이너 실행
  • 방화벽 8080 오픈

하면 바로 접속 가능.


2️⃣ VM에 직접 설치

예:

 
curl -fsSL https://code-server.dev/install.sh | sh
code-server
 

장점 👍

  • 설정이 단순
  • Docker 모르는 사람에게 직관적

단점 👎

  • 환경 망가지면 복구 어려움
  • 패키지 충돌 가능
  • 다른 서비스와 격리 안됨

 

접속

웹에서 외부IP/login으로 접속했더니 잘 된다.

근데 어케되는건지 궁금해져서 물어봄. 사실 도커를 처음 써보다보니 공부된 게 없어서 이거에 관한 이해 부족으로 인한 궁금증인 듯.

 

질문:

궁금한 게 있어. 도커랑 이 코드 서버가 구동되는 흐름이 이해가 잘 안 돼. 이해하기 쉽게 설명해 줄래?

지금 gcp의 /home/USER1/에는 code-server과 projects 폴더가 있고 code-server 안에는 config가 있고, projects 안에는 아무것도 없는 상황이야. 근데 왜 http://외부IP로 접속해서 vscode terminal을 띄워 보면 coder@5cf6e8601834:~/project로 경로가 되어 있는 건지 이해가 안됨

 

답변:

당신이 실행한 명령:

docker run -d \
--name code-server \
-p 80:8080 \
-v ~/projects:/home/coder/project \
-v ~/code-server/config:/home/coder/.config \
-e PASSWORD=비밀번호 \
codercom/code-server:latest
  • -v ~/projects:/home/coder/project
    호스트의 ~/projects 폴더를 컨테이너의 /home/coder/project와 연결
  • -v ~/code-server/config:/home/coder/.config
    호스트의 ~/code-server/config를 컨테이너의 /home/coder/.config와 연결

즉, 컨테이너 내부의 디렉토리는 실제로 호스트 디렉토리와 같은 공간을 가리키게 됩니다.

 

GCP VM Docker 컨테이너
/home/USER1/projects <-> /home/coder/project
/home/USER1/code-server/config <-> /home/coder/.config
  • 왼쪽: VM 실제 파일 시스템
  • 오른쪽: 컨테이너 내부
  • docker run -v로 연결 → 동기화됨

그래서 컨테이너에서 아무 파일을 만들어도 호스트에 그대로 반영됩니다.
반대로 호스트에서 파일을 넣어도 컨테이너에서 바로 보입니다.

 

요약하면

  1. Docker 컨테이너 안에서는 독립된 파일 시스템이 있음
  2. -v 옵션으로 호스트 경로를 연결 → 동기화 공간 생성
  3. code-server는 컨테이너 안에서 /home/coder를 홈으로 사용
  4. 터미널 열면 /home/coder/project가 기본 경로
    → 실제 호스트에서는 ~/projects와 같은 곳

 

음 대충 이해가 된다.

도커 컨테이너 안에 파일 시스템이 따로 있고 실제 VM 파일 시스템이랑 일대일로 동기화되어있단 소리구나.

테스트를 해본다.

이렇게 만들면 컨테이너 내부의 /home/coder/project에 파일을 하나 추가했으니깐.. 거기 동기화되어있는 VM의 ~/projects에 파일이 추가되어있을 것이다.

USER1@instance-20260306-073209:~$ cat projects/test.txt 
Hello World!!

 

오 도커 신기하다. 더 자세히는 알아보지 않기로 한다.

 

앞으로 개발할 땐 웹상에서 project 안에 project1, project2 .... 이런 식으로 디렉토리 추가해서 하면 될 것이다.

 

마지막으로 궁금한 거 하나 더 질문하고 마무리.

질문

잠깐, http://외부IP 로 접속했을 때, GCP VM의 80번 포트로 들어가게 되는 건가?

 

답변

맞아요, 딱 그게 핵심입니다. 👍

흐름을 단계별로 설명하면 이렇게 돼요:

1️⃣ 브라우저에서 접속

http://외부IP
 
  • 외부IP → GCP VM의 외부 IP (Compute Engine 인스턴스)
  • 포트 기본값 → 80 (HTTP 기본 포트)

2️⃣ GCP VM 방화벽 확인

  • GCP는 기본적으로 VM 포트가 막혀 있음
  • 그래서 VPC → Firewall rules에서 TCP 80 포트 허용해야 접속 가능

3️⃣ Docker 컨테이너 포트 매핑

 
-p 80:8080
 
  • 왼쪽(호스트): 80 → GCP VM 내부
  • 오른쪽(컨테이너): 8080 → code-server 내부 포트

즉:

브라우저 → GCP VM 외부IP:80 → Docker host 포트 80 → 컨테이너 내부 8080 → code-server
 

4️⃣ 결과

  • 브라우저에서 http://외부IP → 컨테이너 안의 code-server 웹 페이지가 뜸
  • 컨테이너 내부 터미널이나 /home/coder/project 경로도 그대로 유지

✅ 핵심 요약

  • 브라우저 → VM 외부IP → VM 포트 80 → Docker 컨테이너 8080 → code-server
  • -p 80:8080이 없으면 외부IP로 접속 불가
  • GCP 방화벽에서 TCP 80 허용 필수

여기까지 이해완료.

반응형