HoonK212 GitHub_Blog

[Docker] Docker 명령어

Docker 기본 명령어 정리

docker search ‘이미지 이름’

  • 이미지 검색
  • Dockerhub에서 사용 가능한 이미지 검색
    • 공식 이미지라면 사용자 이름이 붙지 않는다.

docker pull ‘이미지 식별자’

  • 이미지 다운로드
  • Dockerhub로부터 지정한 이미지 다운로드

docker images

  • 현재 Host에 존재하는 이미지 리스트 출력
  • repository, tag, image id, created, size 등의 정보 출력
  • Docker 이미지에는 커널 없이 서비스를 실행하기위한 파일만 존재하므로, size가 작다.

docker run (‘옵션’) ‘이미지 식별자’ (‘명령어’) (‘인자’)

  • -d
    • 컨테이너가 detached 모드에서 실행됨
    • 실행 결과로 컨테이너 ID 출력
    • -d 옵션 없이 실행한 후 해당 터미널에서 Ctrl + D를 눌러 빠져나온다면, 즉시 해당 컨테이너는 종료된다.
    • 예시
      • docker run -d python:3.8-alpine python -m http.server
  • -it
    • 컨테이너를 종료하지 않은 채로, 터미널의 입력을 계속해서 컨테이너로 전달하기 위해 사용
    • 컨테이너의 쉘이나 CLI 도구를 사용할 때 매우 유용
    • 예시
      • docker run -it python:3.8-alpine /bin/bash
  • -name
    • 컨테이너에 이름을 부여하기 위한 옵션
    • 예시
      • docker run -d –name my-server python:3.8-alpine python -m http.server
      • docker kill my-server
  • -e
    • 컨테이너의 환경변수를 설정하기 위한 옵션
    • -e 옵션을 사용하면 Dockerfile의 ENV 설정도 수정된다.
    • 예시
      • docker run -e FOO=bar python:3.8-alpine env
  • -p
    • Host와 컨테이너 간의 port 바인딩을 위해 사용
    • 예시 (Host 80, 컨테이너 8080)
      • docker run -d -p 80:8000 python:3.8-alpine python -m http.server
  • -v
    • 볼륨 설정을 위해 사용
    • Host 파일 시스템의 특정 경로를 컨테이너의 파일 시스템 특정 경로와 마운트 해준다.
    • 예시
      • echo Hi > test.txt
      • docker run -v pwd :/etc python:3.8-alpine cat /etc/test.txt
      • Hi
  • -w
    • Dockerfile의 WORKDIR 설정을 수정하기 위해 사용
    • 예시
      • docker run -w /etc python:3.8-alpine pwd
      • /etc
  • —entrypoint
    • Dockerfile의 ENTRYPOINT 설정을 수정하기 위해 사용
    • 예시
      • docker run –entrypoint python python:3.8-alpine –version
      • Python 3.8.2
  • -rm
    • 컨테이너를 일회성으로 실행할 때 사용
    • 해당 컨테이너가 종료될 때 컨테이너와 관련된 리소스까지 깨끗이 제거해준다.
    • 예시
      • docker run –rm -it wernight/funbox nyancat

docker ps

  • 실행중인 컨테이너 목록 확인
  • -a
    • 이전에 종료된 컨테이너들을 포함한 모든 목록 확인

docker start ‘컨테이너 ID’

  • 컨테이너 실행

docker attach ‘컨테이너 ID’

  • 해당 컨테이너에 접속한다.

docker stop ‘컨테이너 ID’

  • 컨테이너 종료

docker rm ‘컨테이너 ID’

  • 컨테이너 삭제
  • 운영체제의 프로세스와 달리 컨테이너가 종료되더라도 다시 실행하면 이전 상태가 유지되므로, 사용하지 않는 컨테이너를 완전히 제거하기 위해서는 rm 명령어를 사용해야 한다.

docker build —tag ‘태그 이름’

  • Dockerfile을 만들어 이미지를 생성
    • FROM “기본 이미지”
    • ADD “이미지에 추가할 파일”
    • RUN “실행할 명령어”
    • 등등
  • 만들어진 Dockerfile이 존재하는 위치에서 명령어 실행

docker commit -p ‘컨테이너 ID’ ‘이름’

  • 백업 전 상태 저장

docker save -o ‘저장할 파일 이름’.tar ‘이름’

  • tar 파일로 백업

docker login

  • Dockerhub 로그인

docker push ‘ID’/’Repository’:’Tag’

  • Dockerhub에 이미지 업로드

docker load < ‘저장한 파일 이름’.tar

  • 백업 tar 파일로 이미지 복원