Image

1. images : 로컬에 다운받아진 image 리스트 출력

  • prune : 쓸모없는 이미지 제거
$ docker images

# 쓸모없는 이미지 제거
REPOSITORY         TAG       IMAGE ID       CREATED             SIZE
mysql              5.7       09361feeb475   2 weeks ago         447MB
<none>             <none>    e72977525a24   About an hour ago   334MB
<none>             <none>    1207fa0a2143   About an hour ago   141MB
$ docker image prune

$ docker images
REPOSITORY         TAG       IMAGE ID       CREATED             SIZE
mysql              5.7       09361feeb475   2 weeks ago         447MB

2. rmi : image 제거 (remove image)

 -f : 이미지를 삭제하면서 만들어져있는 컨테이너까지 삭제 (force)

$ docker rmi {이미지ID}

3. pull : 허브에 올라와있는 image 파일 가져오기

 - 일반적으로 run 명령어를 사용하면 허브에 있는 image 파일을 가져오기 때문에 사용할 일이 없음 → 업데이트 할 경우에 사용함.

$ docker images

4. build : DockerFile을 build하여 image파일 생성

  -t : 이름지정 (tag)
  -f : Dockerfile 지정 -> default 파일명을 사용하지 않고 다르게 할 경우 사용

$ docker build [옵션] {경로} 

# example
$ docker build -t test .
$ docker build -f Dockerfile.dev -t test .

→ 현재경로(.)에 test라는 이름의 image 생성

5.push : 생성한 image파일을 Docker Hub에 업로드

○ 이미지태그 : [Registry URL]/[사용자 ID]/[이미지명]:[버전]
    - Registry URL : docker.io가 default 값
ex) docker.io/library/ubuntu : ubuntu의 이미지태그

$ docker push {이미지명} 

# example
$ docker tag test europani/test-app:1         // test -> europani/test-app:1 로 태그지정
$ docker push europani/test-app:1

→ 이미지태그 지정 후 도커허브로 push

Contrainer

1. run : 컨테이너 생성과 동시에 접속

 - 로컬에 해당 image가 있으면 실행하고 없을 시 docker hub에서 찾아서 실행

○ 옵션
  -it : 컨테이너로 들어가자마자 bash로 CLI 입출력을 사용할 수 있도록 해줌(interact + terminal)
  -d : 데몬으로 실행(백그라운드)
  -p : 포트지정 [호스트port:컨테이너port]
  -v : 볼륨지정 [호스트dir:컨테이너dir]
  --rm : 프로세스 종료시 자동으로 컨테이너 삭제
  --name : 컨테이너 이름지정

$ docker run [옵션] {이미지명}:{태그명} {커맨드} 

# example
$ docker run -it python:3
$ docker run -p 8080:8080 -it europani/test-app:1

Dockerfile 사용 시 뒤에 커맨드를 붙여서 사용할 경우 마지막 CMD구분 대신 입력한 커맨드가 실행되기 때문에 실행 후 exec 명령어를 통해 터미널로 접근해야 한다

2. stop : 실행중인 컨테이너 중지

$ docker stop {컨테이너ID}

3. exec : 실행중인 컨테이너에 명령어 전달

  • run VS exec
    - run : 새로운 컨테이너를 만들어서 실행
    - exec : 이미 실행중인 컨테이너에 명령어 전달
$ docker exec {컨테이너ID} {커맨드}

# example
$ docker exec -it database bash   # database 컨테이너 shell 접속 

Ctrl + P + Q를 누르면 컨테이너를 종료하지 않고 나올 수 있다

4. ps : 실행중인 컨테이너 출력

  -a : 실행중이지 않은 컨테이너를 포함한 로컬에 존재하는 모든 컨테이너 출력

$ docker ps -a

5. rm : 컨테이너 제거

$ docker rm {컨테이너ID}
$ docker rm `docker ps -a -q`   // 모든 컨테이너 삭제

6. logs : 로그 출력

  -f : 실시간 출력 (follow)
  --tail : 뒤에서부터 출력 (라인수 적용가능)

$ docker logs --tail 10 {컨테이너ID}

7. commit : 현재 컨테이너로 이미지 생성

$ docker commit {컨테이너ID} {저장할 이미지이름}

Compose

1. compose up : docker-compose.yml 실행하여 빌드 후 서비스 실행

  -d : 데몬으로 실행(백그라운드)
  --build : 시작 전 이미지를 새로 만듬

$ docker-compose up [옵션]

# example
$ docker-compose up -d --build

○ 옵션
  -d : 데몬으로 실행(백그라운드)

2. compose doum : 서비스 제거

$ docker-compose down

3. compose start : stop된 서비스 실행

$ docker-compose start

4. compose stop : 실행중인 서비스 중단

$ docker-compose stop

5. compose ps : 서비스 상태 출력

$ docker-compose ps