도커에서 이미지를 받고 컨테이너를 생성하고 삭제 할 때, 자주쓰는 기본 명령어이다.
컨테이너를 실행하는 명령어는 다음과 같다.
docker run [OPTIONS] IMAGE[:TAG|@DIGEST][COMMAND] [ARG...]
다음은 자주 사용하는 옵션이다.
docker ps [OPTIONS]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
도커 ID의 전체 길이는 64자리이다. 하지만 명령어의 인자로 전달할 때는 전부 입력하지 않아도 된다. 예를 들어 ID가 abcdefgh…라면 abcd만 입력하거나 앞부분이 겹치지 않는다면 1-2자만 입력한다.
종료된 컨테이너를 완전히 제거하는 명령어는 다음과 같다.
docker rm [OPTIONS] CONTAINER [CONTAINER...]
중지된 컨테이너 ID를 가져와서 한번에 삭제 docker rm -v $(docker ps -a -q -f status=exited)
docker images [OPTIONS]REPOSITORY[:TAG]]
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker rmi [OPTIONS] IMAGE [IMAGE...]
images 명령어를 통해 얻은 이미지 목록에서 이미지 ID를 입력하면 삭제가 된다. 단, 컨테이너가 실행중인 이미지는 삭제 되지 않는다. 컨테이너는 이미지들의 레이어를 기반으로 실행 중이므로 삭제할 수 없다.
컨테이너가 정상적으로 동작 하는지 확인하는 좋은 방법은 로그를 확인한다.
docker logs [OPTIONS] CONTAINER
실행중인 컨테이너에 들어가거나 컨테이너의 파일을 실행한다.
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
run은 새로 컨테이너를 만들어서 실행하고 exec은 실행중인 컨테이너에 명령어로 실행한다.
베이스 이미지를 지정합니다. 반드시 지정해야 하며 어떤 이미지도 베이스 이미지가 될 수 있습니다. tag는 될 수 있으면 기본값보다 구체적인 버전(16.04등)을 지정하는 것이 좋습니다. 이미 만들어진 다양한 베이스 이미지는 Docker hub 에서 확인할 수 있습니다.
Dockerfile을 관리하는 사람의 이름 또는 이메일 정보를 적습니다. 빌드에 딱히 영향을 주지는 않습니다.
파일이나 디렉토리를 이미지로 복사합니다. 일반적으로 소스를 복사하는 데 사용합니다. target디렉토리가 없다면 자동으로 생성합니다.
COPY명령어와 매우 유사하나 몇가지 추가 기능이 있습니다. src에 파일 대신 URL을 입력할 수 있고 src에 압축 파일을 입력하는 경우 자동으로 압축을 해제 하면서 복사됩니다.
가장 많이 사용하는 구문입니다. 명령어를 그대로 실행합니다. 내부적으로 /bin/sh -c 뒤에 명령어를 실행하는 방식입니다.
도커 컨테이너가 실행되었을 때 실행되는 명령어를 정의합니다. 빌드할 때는 실행되지 않으며 여러 개의 CMD가 존재할 경우 가장 마지막 CMD만 실행됩니다. 한꺼번에 여러 개의 프로그램을 실행하고 싶은 경우에는 run.sh 파일을 작성하여 데몬으로 실행하거나 supervisord, forego와 같은 여러 개의 프로그램을 실행하는 프로그램을 사용합니다.
RUN, CMD, ADD, COPY등이 이루어질 기본 디렉토리를 설정합니다. 각 명령어의 현재 디렉토리는 한 줄마다 초기화되기 때문에 RUN cd /path를 하더라도 다음 명령어에선 위치가 초기화 됩니다. 같은 디렉토리에서 계속 작업하기 위해서 WORKDIR을 사용합니다
도커 컨테이너가 실행되었을 때 요청을 기다리고 있는(Listen) 포트를 지정합니다. 여러개의 포트를 지정할 수 있습니다.
컨테이너 외부에 파일시스템을 마운트 할 때 사용합니다. 반드시 지정하지 않아도 마운트 할 수 있지만, 기본적으로 지정하는 것이 좋습니다.
컨테이너에서 사용할 환경변수를 지정합니다. 컨테이너를 실행할 때 -e옵션을 사용하면 기존 값을 오버라이딩 하게 됩니다.