
초보자의 Docker 사용기
Docker의 간단한 명령어
현재 Lubycon 에서 진행하는 프로젝트에서 front-end 서버를 위한 docker 세팅이 필요해서 갑자기 docker에 대한 학습을 하기 시작했다. lubycon에서 진행하는 프로젝트의 spec은 Nodejs, Vuejs 그리고 Typescript를 이용한 서버사이드 랜더링의 SPA 어플리케이션이다. 일단 학습하기에 앞서 간단한 docker에 간단한 명령어를 먼저 학습해야 했다.
이미지 빌드
1 $ docker build -t -p 80:80 <your username>/node-web-app .
내가 빌드한 이미지 리스트
1 $ docker images
이미지 삭제
1 $ docker rmi [image id]
동작 중인 컨테이너 리스트
1 $ docker ps
모든 컨테이너 리스트
1 $ docker ps -a
컨테이너 삭제
1 $ docker rm [container id]
컨테이너 로그 확인
1 $ docker logs [container id]
컨테이너 접속
1 $ docker exec -it <container id> /bin/bash
컨테이너 실행시키
1 $ docker run -i -t --name [docker-example] -p 3000:3000 [images name] /bin/bash
위의 기본적인 명령어만 가지고 어느정도 컨테이너를 띄우고 내리는 것은 간단하게 된다.
일단 간단한 Docker image를 만들기 위해서는 간단한 어플리케이션이 하나 필요하다. 아무래도 Javascript로 이루어진 Node 서버가 나에게는 조금 더 쉽거니와 Lubycon에서 역시 Node 서버를 사용하기 때문에 Node 서버를 기준으로 글을 썼다.
일단 간단한 express 서버를 띄운다. express 서버를 띄우기 위해선 express-cli가 설치되어 있어야 한다. 혹시나 설치가 되어 있지 않다면 generator를 global 옵션을 이용해서 설치한다.
1 | $ npm install express-generator -g |
위와 같이 global 옵션을 이용해서 설치했다면 간단하게 express 서버 시작하는 것은 간단하게 된다. 일단 docker를 테스트 할 수 있는 디렉토리로 들어가 아래와 같은 명령어로 express 서버를 셋업 & 모듈을 설치해준다.
1 | # expres 설치를 하면 아래 create와 같은 설치된 리스트가 자동으로 나온다. |
위와 같이 설치한 후, 서버를 실행시킨 후 localhost:3000 으로 접속하면 아래와 같은 화면이 나온다.
위와 같이 ‘Welcome to Express’ 라는 글이 나오면 docker이미지를 만들 서버는 준비가 완료되었다. 이제 Docker image를 만들기 위한 준비만 하면 된다.
아래와 같이 Nodejs 어플리케이션의 최상의 root에 Dockerfile
이라는 파일을 생성한다.
1 | # nodejs 서버를 명시 |
위와 같이 Dockerfile 작성이 완료되었다면 해당 Node 서버의 디렉토리로 이동하였으면 이미지를 먼저 build한다.
1 | $ docker build -t example-app . |
그 후, docker images를 확인해보면 해당하는 images가 생성되어 있다.
1 | $ docker images |
이미지가 생성되었으면 이제 container를 이용하면 실행시키면 된다.
1 | $ docker run -p 4000:4000 -d example-app |
그 후, container 리스트를 보면 상태가 나온다.
1 | $ docker ps |
그 후, 브라우저에서 접속해보면 Express 서버가 로컬에서와 동일하게 떠있는 것을 볼 수 있다.