
가장 쉽게 배우는 도커
- Docker: 어느 환경에서든 docker 환경만 설치돼 있으면, 개발 당시의 환경과 똑같은 환경에서 서비스를 돌릴 수 있다. 일일이 모든 것을 설정할 필요가 없다.
- 개발용 컴퓨터에서 프로그램을 개발하고 테스트하여 서비스를 배포하기 위해서 서버용 컴퓨터에도 개발용 컴퓨터와 동이란 설정이 되어있어야 한다.
- 개발자가 하나의 프로그램만 개발한다면 문제가 되지 않지만, 여러 다양한 환경에서 개발을 진행해야 한다면, 버전의 충돌이 발생할 것이다.
- 도커의 컨테이너를 활용하면, 공간 분리도 되고, 자원의 낭비도 줄일 수 있다.
- 일일이 개발 환경과 서버 환경을 똑같이 설정하는 일은 번거롭고, 어려운 일이지만 서비스 배포를 위해서 동일한 환경을 구성해야만 한다. 사소한 차이 때문에 서버에서 구동이 되지 않을 수도 있다.
- 이 문제 또한 도커의 컨테이너로 해결 가능. 컨테이너 = 설계도. 개발 환경에서 컨테이너를 만들어 개발한 프로그램과 함께 서버 환경에 건내주면, 서버 환경에서는 컨테이너를 통해 개발 환경과 완전히 동일한 환경을 구성하고, 실행할 수 있게 된다.
docker run -it node
- docker hub: 개발할 때 필요한 거의 모든 환경을 '이미지'란 형태로 찾을 수 있다
- docker image: 리눅스 환경에서의 특정 상태를 캡쳐해 놓은 것. 컨테이너를 만들어내는 프레임 이라고 생각하면 된다.
- node image: 리눅스 환경에 node.js가 설치된 상태를 저장. 해당 이미지는 컨테이너가 설치되면 바로 node 명령어를 실행하도록 설계되어 있다.
- "docker run" 명령은 해당 이미지를 내 컴퓨터에서 검색하고, 없으면 도커 허브에서 찾아 다운로드하고, 해당 이미지를 컨테이너로 만드는 명령이다.
- "-it" 옵션은 컨테이너를 생성한 다음, 그 환경에서 CLI를 실행해준다.
docker images
- 다운로드 된 도커 이미지들을 확인할 수 있다.
docker ps
- 현재 생성되어 실행되고 있는 컨테이너를 확인할 수 있다.
docker ps -a
- 작업을 진행 중이 아닌 컨테이너까지 확인할 수 있다.
- dockerfile: 나만의 이미지를 만들기위한 설계도
docker run --name
docker run -v ${pwd}:/home/node/app
- volume: 컨테이너와 특정 폴더를 공유하는 것을 말한다. 현재 경로의 파일들이 "/home/node/app"에 공유됨
docker run -p 8008:8080
- port: 연결될 포트번호를 지정. 내 컴퓨터 8080 포트와 컨테이너 8080포트를 연결한다는 의미
docker run -d
docker log
- log를 확인
- Docker compose: 거시적 설계도. 각각의 도커 파일을 따로 실행하는 것도 귀찮지만, 서로 연결되어 있지 않다. 이 각각의 도커 파일을 묶어 간편하기 실행하도록 하는 것이 docker compose 파일이다. service란 항목으로 프론트엔드, 백엔드, 데이터베이스 도커 파일의 위치를 적어준다.
docker-compose up
"docker-compose" 파일을 실행. 세 서비스를 묶어서 컨테이너로 만들어준다.
- node.js란 브라우저 환경이 아닌, 컴퓨터 환경에서 자바스크립트를 실행할 수 있게 해주는 프로그램
정리
=> Docker는 컨테이너를 사용하여 애플리케이션이 다양한 환경에서 일관되게 실행되도록 도와주는 플랫폼이다.