Docker, Kubernetes

[Docker] 도커 명령어 모음

15호의 개발자 2021. 11. 26. 15:55
반응형

[Docker] 도커 명령어 모음

 

  • image 다운
    docker pull image이름 (ex. docker pull httpd)
    docker images: 다운 잘 됐는지 확인 
  • image 실행
    docker run image이름 (ex. docker run httpd)
    docker run --name image이름 httpd (ex. docker run --name ws2 httpd)
  • image 중단
    docker stop container이름 (ex. docker stop ws2)
  • image 재실행
    docker start container이름 (ex. docker start ws2)
  • container 실행
    docker start container이름
    docker run --name image이름 httpd (ex. docker run --name ws2 httpd)
  • container 확인
    docker ps: 정지(stop)되지 않은 컨테이너만 출력 (exit을 통해 빠져나온 컨테이너는 검색되지 않음)
    docker ps -a: all, image stop한 것도 뜸
ps: process status의 약자로 컨테이너의 상태를 확인

CONTAINER ID: 컨테이너를 식별하기 위한 고유 ID
IMAGE: 컨테이너를 만드는 데 사용한 이미지
COMMAND: 컨테이너가 생성될 때 내부에서 작동할 프로그램을 실행하는 명령어. 보통 /bin/bash로 설정되어 있으며, 상호 입출력이 가능한 셸 환경이 실행됨.
CREATED: 컨테이너가 생성되고 난 뒤 흐른 시간
STATUS: 컨테이너가 작동을 시작한 시각. CREATED와 달리 컨테이너를 중지했다가 다시 실행하는 경우 초기화됨. (Up: 컨테이너가 실행 중임, Exited: 종료된 상태, Pause: 일시 중지된 상태)
PORTS: 컨테이너가 사용하는 포트와 프로토콜 (현재는 해당 포트로 컨테이너에 접속할 수 없음)
NAMES: 컨테이너 이름을 표시. docker run에 –name <이름> 옵션으로 직접 지정할 수도 있음
  • log 출력
    docker logs image이름
    docker logs -f images이름: log의 변화가 실시간으로 출력됨
  • container 삭제
    docker rm container이름 (ex. docker rm ws2)
    현재 실행중인 컨테이너는 삭제할 수 없음. 먼저 stop으로 중단한 다음에 rm
    docker rm -f(또는 --force) image이름: 현재 실행중인 컨테이너 stop 안 하고 바로 삭제
  • image 삭제
    docker rmi image이름 (ex. docker rmi httpd)
    컨테이너가 정지 상태가 아닌 삭제 상태일 때만 image를 삭제할 수 있음
rmi: remove image의 약자
  • port 설정
    docker run --name container이름 -p 8081:80 image이름
    (ex. docker run --name ws3 -p 8081:80 httpd)
  • container 이름 변경
    docker rename container이름 변경할container이름

 

 

이때, 각 오브젝트들에게 명령을 내릴 때 그 순서가 있으므로 주의해야한다.

(ex. 순서: 컨테이너 정지 > 컨테이너 삭제 > 이미지 삭제)

 

 

cf. 여기 나온 'image이름' 또는 'container이름'은 각각의 ID로도 가능하며, container이름 | containerID와 같이 파이프라인(|)으로 검색할 수도 있다. 이때, ID는 앞의 2~3자만 입력해도 된다. (단, 다른 ID끼리 곂치지 않는 경우에 한함)

 

 

 

docker run과 docker create의 차이

위에서는 docker run 명령어를 통해 image를 실행시킨다고 언급했다. 하지만 엄밀히 말하자면 이는 컨테이너 생성 및 실행과 동시에 컨테이너 내부로 들어가는 명령어이다. docker run 명령어를 실행한 후 셸의 사용자와 호스트 이름이 변경된 것이 컨테이너 내부에 들어왔음을 의미한다.

 

이번에는 run이 아닌 create으로 컨테이너를 생성하는 것을 알아보겠다. 아래와 같이 명령어를 입력하면 된다.

docker create -i -t --name container이름 image이름:image버전

 

create로 컨테이너를 생성하였다면 run과 달리 컨테이너 내부로 바로 들어가지 않는다는 것을 알 수 있다. 컨테이너 내부로 들어가려면 attach 명령어를, 컨테이너 내부에서 나가려면 exit 또는 Ctrl+P/Q 명령어를 이용한다.

 

  • attach
    docker attach container이름
  • exit
    exit
    컨테이너를 정지시키면서 컨테이너에서 빠져나옴
  • Ctrl + P 또는 Ctrl + Q
    컨테이너를 정지시키지 않고 컨테이너에서 빠져나옴

 

run과 create 차이를 정리하자면 아래와 같다.

run: docker pull > docker create > docker start > docker attach(-i -t 옵션 사용한 경우)
create: docker pull > docker create

 

 

 

 

(출처: 생활코딩, 책 『시작하세요! 도커/쿠버네티스』)

반응형