내 식대로 Docker를 쓰는 이유를 정의하라고 하면 개발(배포) 환경 구분을 위함이라고 정의하겠다.
말 그대로 내가 실행하고자 하는 app을 위한 전용 환경이다.
초보 개발자라면 이런 적이 있을 것이다.
분명 내 컴퓨터에선 잘되는데, 다른 컴퓨터로 옮기니 안되네..
Docker를 사용하면 앞으로 이럴일은 없을 것이다.
도커는 application을 실행하는 환경과 개발하는 환경의 완전한 구분을 위해 나온 플랫폼이다.
어플리케이션을 실행하기 위한 필요한 모든 것이 생성되어 있는 파일이다.
예를 들어 A라는 어플리케이션을 완전히 실행하기 위해선
OracleDB, Node.js, Androide SDK가 필요하다고 가정해보자.
그럼 Oracle Image, Node Image, Androide Image를 만들어서 실행시키거나
A Image로 필요한 모든걸 담아서 실행하면 환경구축이 끝난다.
image를 사용하여 실행된 환경을 Container라고한다.
프로세스의 독립성을 보장하기 위해서 네트워크와 저장소가 분리되어있고
Terminal도 가상환경으로 분리되어 있다.
가장 핵심은 Image와 Container이기 때문에 다른 용어는 진행하면서 언급하겠다.
공식사이트에서 OS에 맞는 Docker를 설치해준다.
Docker Hub과 Docker Desktop도 사용할 때가 많으니 환경 구성 해두자.
다운로드가 완료 되었으면 꼭 재부팅을 해주고 DockerDesktop을 실행시켜보자.
왼쪽아래가 초록색으로 뜬다면 도커를 사용할 준비는 끝이다.
샘플 도커환경을 만들어 실행해보자.
$ docker run -d -p 80:80 docker/getting-started
이 후 브라우저창에 localhost
로 접속해서 다음과 같은 창이 뜬다면 아주 심플한 도커 컨테이너를 성공적으로 만든 것이다.
$ docker run [options] {image_name} [command]
image를 이용해 container를 만드는 docker run
명령어는 위와 같은 형태를 따른다.
우리가 샘플 컨테이너를 만들 때 사용한 문법을 살펴보자.
docker run [-d -p 80:80] {docker/getting-started} [command]
먼저 -d -p 80:80
은 option단에 적용되는 부분으로
docker/getting-started
는 image의 이름이다.
요즘엔 DockerDesktop이 잘되어 있어서 이걸 이용해도 되지만
cli환경에서 자주 쓰이는 명령어는 알고가는게 좋다.
$ docker ps
$ docker stop {container_id | container_name}
$ docker kill {container_id | container_name}
SIGTERM
이라는 신호를 보냄SIGKILL
이라는 신호를 보냄$ docker restart {container_id | container_name}
docker rm {container_id | container_name}
삭제하면 다시 image를 이용해 container를 만들어야한다.
docker exec [options] {container_id | container_name} [command]
더 많은 명령어는 공식사이트를 이용하자.