도커 명령어
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