이미지 받기/생성/실행

이미지 받기

docker pull tomcat:7
  • 최신 이미지는 tomcat:latest 로 받을 수 있음

이미지 목록 출력

docker images

Docker image 삭제

docker rmi ${IMAGE_ID}

실행

docker run -d -i -t -p 8080:8080 tomcat:7
  • -d : 컨테이너를 백그라운드로 실행한다
  • -i(interactive) : STDIN 을 사용할 수 있게 한다
  • -t(Pseudo-ttp) : 해당 컨테이너에 터미널을 할당한다
  • -p : 포트포워딩 설정. 위의 설정은 8080 포트로 요청이 들어왔을 때 8080 포트로 포워딩한다.
  • -name : 컨테이너에 이름을 지정한다
docker run -d -i -t -p 8080:8080 tomcat:7 /bin/bash

혹은 위와 같이 하면 tomcat:7 의 /bin/bash 를 실행시킨다

컨테이너 관련 명령어

모든 컨테이너 목록을 출력

docker ps -a

ps 만 사용하면 현재 동작하는 컨테이너를 볼 수 있다.

해당 컨테이너 시작, 재시작, 접속, 정지, 삭제

docker start ${CONTAINER_NAME}
docker restart ${CONTAINER_NAME}
docker attach ${CONTAINER_NAME}
docker stop ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}

컨테이너 둘러보기

컨테이너 로그 보기

docker logs [OPTIONS] ${CONTAINER_NAME}

컨테이너에 명령어 전달

docker exec [OPTIONS] ${CONTAINER_NAME} COMMEND [ARG...]

Dockerfile

FROM

  • base image 를 지정한다
  • 다음과 같이 버전도 정확히 지정해주는것이 좋다
FORM ubuntu:16.04

RUN

  • shell command 를 해당 docker image 에 실행시킬 떄 사용한다
RUN ["apt-get", "install", "-y", "nginx"]

docker image 에 nginx 를 설치할 때 사용

EXPOSE

Docker container 외부에 노출할 포트를 지정할때 사용한다.

EXPOSE 8080
  • 8080 포트를 외부로 노출

ENV

환경 변수를 지정한다. 환경변수로 지정한 값은 아래에서 사용할 수 있다.

FROM delta
ENV FOO /bar
WORKDIR ${FOO} # WORKDIR /bar
ADD . $FOO     # ADD . /bar
COPY \$FOO /end # COPY /bar /end

이 변수는 도커를 실행할 때 -e 옵션을 주어 오버라이드 할 수 있다.

CMD

도커 컨테이너가 시작할 떄 실행할 커맨드를 지정할 수 있다. RUN 하고 흡사하지만, CMD 는 이미지를 빌드할때 실행되는 것이 아니라 컨테이너가 시작될때 실행된다.

CMD ["python", "main.py"]

ENTRYPOINT

CMD 와 흡사하지만 ENTRYPOINT 는 오버라이드 할 수 없다.

ENTRYPOINT ["/usr/sbin/nginx"]

WORKDIR

리눅스의 cd 커멘드와 비슷한 개념이다.

USER

해당 이미지를 실행할 user 를 지정해준다.

VOLUME

호스트의 디렉토리를 도커 컨테이너에 연결할 수 있다. 주로 로그 수집이나 데이터 저장에 사용된다.

VOLUME ["/opt/origianl"]

ADD

파일과 디렉토리를 호스트에서 도커 이미지로 복사한다.

ADD file /some/dir

빌드 디렉토리 밖의 파일은 추가할 수 없다.

ARG

이미지 빌드시에 어규먼트를 추가할 수 있다.

docker build --build-arg PROJECT_NAME=api -t tomcat -f Dockerfile .