[Docker] 도커의 기본적인 명령어들

@kdkdhoho · May 01, 2024 · 6 min read

웬만하면 docker command --help처럼, --help를 통해 바로 파악하거나 공식 문서를 통해 자세히 이해할 수 있다.

그래도 도커를 공부하면서 유용한 명령어들을 정리할 겸 작성한다.

치트 시트

  • mysql 띄우기

    docker run -d \
    --name mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    -e MYSQL_USER=sa \
    -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
    -e MYSQL_DATABASE=listywave \
    -v /Users/dongho/mysql_container:/var/lib/mysql \
    mysql

버전 관련

  • docker version: 도커의 버전을 확인한다.
  • docker -v: 도커 버전을 간략하게 확인한다.

이미지 관련

  • docker pull NAME[:TAG]: 도커 허브에서 이미지를 받는다.
  • docker images: 도커 엔진에 존재하는 이미지 목록을 출력한다.

컨테이너 관련

  • docker run: 컨테이너를 생성과 동시에 실행한다. 내부로 들어간다.

    • -i: 상호 입출력을 설정한다.
    • -t: tty를 활성하하여 bash shell을 사용한다.
    • --name NAME: 컨테이너 이름을 설정한다.
    • -p: 호스트의 포트와 컨테이너의 포트를 바인딩해 연결한다.

      • -p [호스트의 포트]:[컨테이너의 포트]
      • 컨테이너에 접속할 호스트의 포트를 설정하고, 해당 컨테이너의 포트에 해당하는 프로세스로 통신하는 것이다.
    • ex) docker run -i -t --name myUbuntu -p 7777:80 ubuntu:14.04
    • -d: -i, -t가 접근 가능한 상태, Attach로 설정했다면, -d는 Detached 모드로 설정한다.
    • -e: 컨테이너 내부의 환경변수를 설정한다.
    • -v: 컨테이너에 볼륨을 설정한다.

      • -v HOST_DIRECTORY:CONTAINER_DIRECTORY: 호스트 볼륨 공유 설정
      • -v VOLUME_NAME:CONTAINER_DIRECTORY: 도커 볼륨 설정
    • --net DRIVER_NAME: 네트워크 드라이버를 설정한다.
    • --net-alias HOST_NAME: 컨테이너의 Domain Name을 설정한다.
    • --log-opt max-size={} | max-file={}: 컨테이너가 남기는 로그 파일의 최대 용량과 개수를 설정한다.
    • --restart: 컨테이너의 재시작 옵션을 설정한다.

      • no: 아무런 재시작 동작을 하지 않는다. 기본값.
      • on-failure: 에러로 종료할 때 재시작한다.
      • always: 항상 재시작한다. 수동으로 종료한 경우, Docker가 재시작되면 함께 재시작된다.
      • unless-stopped: 컨테이너가 종료되지 않는 한, 매번 재시작된다. 직접 종료 후 재시작 전까지는, Docker가 재시작돼도 컨테이너는 재시작하지 않는다.
  • docker update: 컨테이너의 설정을 변경한다.
  • docker create NAME|ID: 컨테이너를 단순히 생성만 한다. 내부로 들어가진 않는다.
  • docker start NAME|ID: 컨테이너를 실행한다.
  • docker attach NAME|ID: 컨테이너 내부로 들어간다.
  • docker exec [OPTIONS] CONTAINER COMMAND: 컨테이너 내부에서 명령어를 실행한다.

    • ex) docker exec -it mysql /bin/bash: mysql 컨테이너에 bash shell을 통해 접근한다.
  • exit: 컨테이너를 정지시킴과 동시에 내부에서 빠져나온다.
  • Ctrl + P + Q: 컨테이너를 정지시키지 않고 내부에서 빠져나온다.
  • Ctrl + D: 빠져나옴과 동시에 컨테이너를 종료한다.
  • docker inspect NAME|ID: 도커 객체에 대해 저수준의 정보까지 출력한다.
  • docker ps: 실행중인 컨테이너 정보 출력한다.

    • -a: 정지된 컨테이너도 모두 출력한다.
  • docker rename NAME|ID NEW_NAME: 컨테이너의 이름을 변경한다.
  • docker stop NAME|ID: 컨테이너를 중지한다.
  • docker rm NAME|ID: 컨테이너를 삭제한다.

    • -f: 실행 중인 컨테이너를 강제로 삭제한다.
  • docker container prune: 모든 컨테이너를 삭제한다.
  • docker volume creat NAME: 도커 볼륨을 생성한다.

네트워크 관련

  • docker network create --driver DRIVER DRIVER_NAME

    • docker run -it --net DRIVER_NAME: NAME에 해당하는 네트워크 드라이버를 통해 컨테이너를 생성한다.
  • docker network disconnect DRIVER_NAME CONTAINER_NAME: 컨테이너에 네트워크를 할당 해제한다.
  • docker network connect DRIVER_NAME CONTAINER_NAME: 컨테이너에 네트워크를 할당한다.

로깅 관련

  • docker logs CONTAINER: 컨테이너의 로그를 확인한다.

    • --tail n: 뒤에서부터 n줄을 출력한다.
    • --since Unix_Time: 특정 시간 이후의 로그를 확인한다.
    • -t: 타임 스탬프를 출력한다.
    • -f: 로그를 실시간으로 확인한다.

이미지 관련

  • docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]: 컨테이너를 이미지로 만들어 도커 허브에 커밋한다.

    • -a, --author: 작성자
    • -m, --message: 커밋 메시지
  • docker save [OPTIONS] IMAGE: 이미지를 파일로 추출한다.

    • -o, --output NAME: 추출될 파일명을 설정한다.
  • docker load [OPTIONS]: 추출된 이미지를 도커로 업로드한다.

    • -i, --input FILE: 업로드 할 파일명을 선언한다.
  • docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]: SOURCEIMAGE의 이름에 TARGETIMAGE을 추가한다.
@kdkdhoho
Back to Basic