docker 명령어

도커 이미지 관련 명령어

docker login [repository] : 저장소(repository)에 로그인한다. 저장소 주소를 적지 않으면 Docker Hub repository 로 로그인한다.

docker create [image] : 해당 이미지로부터 새로운 컨테이너를 생성한다.

docker pull [image] : 이미지를 저장소로부터 가져온다.

docker push [image] : 이미지를 저장소에 올린다.

docker tag [source] [target] : 원본 이미지 새로운 태그를 부여한다.

docker search [term] : 해당 단어로 저장소에 있는 이미지를 검색한다.

docker images : 로컬 시스템에 저장되어 있는 이미지 목록을 보여준다.

docker history [image] : 해당 이미지의 히스토리를 보여준다.

도커 컨테이너 관련 명령어

docker ps : 현재 실행중인 컨테이너 목록을 보여준다.

docker run [image] : 해당 이미지로 도커 컨테이너를 실행한다.

docker start [container] : 도커 컨테이너를 시작한다.

docker stop [container] : 도커 컨테이너를 중지한다. (SIGTERM -> SIGKILL)

docker stop $(docker ps -q) : 현재 작동하는 모든 도커 컨테이너를 중지한다.

docker kill [container] : 도커 컨테이너를 강제로 중지한다. (SIGKILL)

docker inspect [container] : 컨테이너의 상세 정보를 보여준다.

docker rm [container] : 중지된 도커 컨테이너를 삭제한다.

docker rm $(docker ps -a -q) : 중지된 모든 도커 컨테이너를 삭제한다.

docker exec -it [container] [command] : 대상 도커 컨테이너에 명령어를 실행한다.

기타 명령어

docker info : 도커 상세 정보를 보여준다.

docker version : 도커 버전을 보여준다.

docker stats : 현재 도커 컨테이너들의 상태로 보여준다.

Docker 로그 관리

도커(docker)는 로깅 드라이버(logging driver) 통해, 로그를 남기게 되어 있습니다. 로깅 드라이버의 기본 값을 json-file입니다. 즉, 로그를 json 형식으로 파일로 저장하게 됩니다.

아래 명령어를 실행하면, 해당 도커의 로깅 드라이버가 뭔지 알 수 있습니다.

$ docker info --format ''
json-file

json-file 로깅 드라이버를 사용하는 경우, 시간이 지날 수록 로그 파일이 쌓이기 때문에 주기적으로 파일을 삭제해줘야합니다. 주기적으로 파일을 삭제하는 방법은, 도커 데몬의 설정을 변경하거나, logrotate를 이용하는 것입니다.

도커 데몬 설정 파일 변경하기

/etc/docker/ 디렉토리에 있는 daemon.json 파일에 아래와 같은 내용을 추가해 주면 됩니다.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3" 
  }
}

도커 재시작하면 변경 사항이 반영됩니다.

logrotate 이용하기

logrotate는 로그를 관리하기 위해 사용되는 범용툴입니다. 서버에 설치가 안되어 있다면, 설치가 필요합니다. 아래와 같이 컨테이너 로그를 정리하는 설정 파일을 추가해 주면 됩니다.

cat > /etc/logrotate.d/container << EOF
/var/lib/docker/containers/*/*.log {
    rotate 100
    copytruncate
    missingok
    notifempty
    compress
    maxsize 100M
    maxage 30
    daily
    dateext
    dateformat -%Y%m%d-%s
    create 0644 root root
}
EOF

참고 문서