[Docker] Docker란? Docker 설치와 사용
업데이트:
Docker란?
Container를 생성하고 관리하기 위한 도구
- Container는 뭔데?
- 표준화된 소프트웨어 Unit
- Code package
- 코드의 실행 환경 등
- Container가 왜 필요한데?
- 개발 당시의 환경과 동일한 실행 환경을 갖게 할 수 있음
- ex) 실행을 위한 Node.JS 버전
- 팀원 간 협업 시 동일한 개발 환경 공유
- 혼자, 작업 중인 프로젝트가 여러 개인 경우 독립적으로 관리 가능
- ex) 프로젝트마다 버전이 달라야 하는 경우
⇒ Host 컴퓨터가 아닌 컨테이너가 갖고 있기 때문에 가능한 얘기
- 개발 당시의 환경과 동일한 실행 환경을 갖게 할 수 있음
- 가상 머신(Virtual Machines) 을 쓰면 안되나?
- 장점
- 독립 환경 구성 가능
- 모든 것을 안정적으로 공유하고 재생산 할 수 있음
- 단점
- 중복 복제, 공간 낭비가 발생함
- 호스트 컴퓨터에 VM을 계속 설치해야 되므로 성능 저하가 필연적임
- 정확히 동일한 방식으로 VM들을 설정해야 되는데 까다로움
- config 파일 같은게 없으니까~
- 장점
-
Docker는 “Container”들을 생성(Build)하고 관리(Manage)하기 위한 도구
Docker 설치
- Docker 설치 경로
- Docker Playground (무설치)
- Windows 10 Pro 인 경우
- Hyper-V 활성화
- Docker Install
- 끝
Docker 사용
- Docker의 역할
- 프로젝트 폴더에 필요한 라이브러리를 설치(ex.
npm install
)하지 않아도, node.js 기반 app을 실행할 수 있다는 것
- 프로젝트 폴더에 필요한 라이브러리를 설치(ex.
-
Dockerfile
생성FROM node:14 WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOSE 3000 CMD [ "node", "app.mjs" ]
-
Docker 이미지 생성 (프로젝트 경로에서)
docker build .
-
Docker 실행
docker run -p 3000:3000 2f04e8cfc9b0f969798e302ce4b9616354c059191a5fbd2d0f68cf4c410ec79c
-
실행 확인
http://localhost:3000/
-
실행 중인 Container 나열
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0c636ff8150c 2f04e8cfc9b0 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3000->3000/tcp brave_newton
-
Container 종료
docker stop brave_newton
*Name은 임의로 부여된 컨테이너 이름
Reference
Udemy - Docker & Kubernetes: The Practical Guide
댓글남기기