참고 자료: https://docs.docker.com/engine/reference/commandline/cli/
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
레지스트리에서 이미지를 다운로드. 로컬 캐사에 이미지가 있다면 해당 이미지를 사용하고, 없다면 docker hub에서 해당 이미지를 다운로드
TAG는 생략이 가능하고 생략하면 :latest가 적용됨
digest
는 Docker v2 이후의 형식을 사용하는 이미지들이 가지고 있는 content-addressable 한 고유 식별자
위 실행 결과에서 태그를 사용하지 않아 디폴트 태그인 lastest 가 적용되는 것을 볼 수 있다
pulling from library/ubuntu 라는 로그에서 library
는 Docker hub의 기본 저장소(registry)를 나타낸다
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
이미지 리스트를 출력한다
OPTIONS
-a
: 숨겨진 이미지까지 모두 출력--digests
: digest와 함께 출력REPOSITORY를 명시하여 원하는 이미지 리스트들을 조회 가능
$ docker ps [OPTIONS]
실행 중인 컨테이너 리스트를 출력한다
OPTIONS
-a
: 모든 컨테이너를 출력한다$ docker logs [OPTIONS] CONTAINER
컨테이너의 실행 중에 발생한 로그를 보여준다
OPTIONS
--tail N
: 마지막에서 N개의 로그 출력-f
: 출력 후 프로세스 종료하지 않고 계속해서 출력되는 로그를 추적-f --tail 0 CONTAINER
와 같이 사용하면 새로 생성되는 로그만 확인 가능docker logs CONTAINER | gerp:{text}
와 같이 리눅스의 grep
명령어를 사용하여 원하는 text가 포함된 로그만을 조회할 수 있다
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
이미지가 없다면 pull 한 후 새로운 컨테이너를 생성하여 COMMAND를 실행
OPTIONS
-d
: detach 옵션으로 컨테이너를 백그라운드에서 실행하고 컨테이너 ID를 출력-it
: 컨테이너를 종료하지 않은 채 터미널의 입력을 계속해서 컨테이너로 전달-i
: STDIN을 계속 유지-t
: 가상 터미널을 할당--name
: 컨테이너 이름 지정-e
: 환경변수 지정-p
: 호스트와 컨테이너 간의 포트 바인드를 위해 사용--rm
: 컨테이너 종료 시 자동으로 삭제$ docker start [OPTIONS] CONTAINER [CONTAINER...]
중지 됐던 하나 이상의 컨테이너를 실행
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
실행중인 컨테이너에서 명령어를 실행
OPTIONS:
-b
: 백그라운드에서 명령어 실행docker exec -d mycontainer touch /tmp/execWorks
: mycontainer의 백그라운드에서 touch 명령어 수행
$ docker stop [OPTIONS] CONTAINER [CONTAINER...]
하나 이상의 실행중인 컨테이너 중지
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
하나 이상의 컨테이너 삭제. 컨테이너가 실행중이라면 docker stop
을 통해 중지 후에 사용해야 함
OPTIONS:
-f
: 실행중인 컨테이너 강제 종료(SIGKILL)-v
: 컨테이너와 연관된 volumne 제거$ docker rmi [OPTIONS] IMAGE [IMAGE...]
하나 이상의 이미지 삭제
$ docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
SOURCE_IMAGE를 나타내는 TARGET_IMAGE 태그를 생성한다
ubuntu:latest 이미지와 동일한 custom_ubuntu:new가 생성된 것을 볼 수 있다
$ docker build [OPTIONS] PATH | URL | -
dockerfile로 부터 이미지를 생성
OPTIONS:
-t
: name:tag
형식으로 태그 지정-f
: Dockerfile 경로 지정(디폴트는 PATH/Dockerfile
)$ docker push [OPTIONS] NAME[:TAG]
이미지를 레지스트리에 업로드, 기본 레지스트리인 Docker Hub에 업로드 된다