The Remote containers extention can use a Docker container as a full-featured development environment. If you want to make a remote container setup in visual studio code, there are several mandatory settings.
Keywords
container
컨테이너는 가상 머신과 마찬가지로 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줍니다. 컨테이너를 사용하면 개발자와 IT 운영팀이 훨씬 작은 단위로 업무를 수행할 수 있으므로 그에 따른 이점이 훨씬 많습니다.
-
왜 컨테이너를 사용해야 하는가?
가상 머신은 하드웨어 스택을 가상화합니다. 컨테이너는 이와 달리 운영체제 수준에서 가상화를 실시하여 다수의 컨테이너를 OS 커널에서 직접 구동합니다. 컨테이너는 훨씬 가볍고 OS 커널을 공유하며, 시작이 훨씬 빠르고 OS 전체 부팅보다 메모리를 훨씬 적게 차지합니다.
-
컨테이너를 사용하면 애플리케이션과 종속 항목을 버전 관리가 쉬운 하나의 패키지로 묶어 팀 내의 여러 개발자가 쉽게 복제하고 클러스터 내의 머신으로도 간편하게 복제되도록 만들 수 있습니다.
-
소프트웨어 라이브러리로 개별 코드를 패키지로 묶어 사용자 인증 및 세션 관리 등의 로직을 추상화할 수 있듯이, 컨테이너로 애플리케이션 전체를 패키지로 묶어 운영체제와 머신, 코드 자체까지 추상화할 수 있습니다. 이를 서비스 기반 아키텍처와 결합하면 개발자들이 논리성을 판단해야 하는 단위 자체가 훨씬 작아지므로 민첩성과 생산성이 크게 향상됩니다. 그 결과 애플리케이션의 개발 및 테스트, 배포, 전반적인 관리가 훨씬 쉬워집니다.
docker
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.
도커에서 가장 중요한 개념은 컨테이너와 함께 이미지라는 개념입니다.
-
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable). 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장됩니다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다.
말그대로 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없습니다. 이제 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 됩니다. 한 서버에 여러개의 컨테이너를 실행할 수 있고, 수십, 수백, 수천대의 서버도 문제없습니다.
VS code에서 리모트 컨테이너 extension을 이용해서 개발하는 방법
레퍼런스 문서
Developing inside a Container using Visual Studio Code Remote Development
- Docker for mac 설치한다.
- VScode에서 extension으로 Remote-container, Docker를 설치한다.
- Command Palette에서 ‘Open Folder in Container’를 클릭한다.
- 컨테이너로 실행시키고자 하는 폴더를 선택한다.
- Dockerfile example
FROM node:12
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENV PORT=8080
EXPOSE 8080
CMD [ "npm", "start"]
-
Docker compose
도커는 복잡한 설정을 쉽게 관리하기 위해 YAML방식의 설정파일을 이용한 Docker Compose라는 툴을 제공합니다.
Docker에서 제공하는 Compose Sample
여러개의 도커 이미지들을 이용한 복잡한 세팅의 개발환경을 구축해야 할 때 docker-compose파일을 이용하면 손쉽게 세팅이 가능하다고 한다. 자세한 내용은 추후에 다른 포스팅에서 정리해 볼 예정이다.