HwangHub

도커 커맨드 분석 본문

DEV-STUDY/Infra

도커 커맨드 분석

HwangJerry 2023. 7. 22. 02:07

현재 실행중인 컨테이너 나열 : ps

docker ps

여기서 ps는 process status라는 의미

 

 

컨테이너 생성 후 실행 : run (== create + start)

docker run <이미지 이름> == docker create <이미지 이름> + docker start <컨테이너 아이디/이름>

 

create 명령어를 통해 반환된 로그가 컨테이너 아이디입니다.

이를 일부만 복사하여 start -a 커맨드 뒤에 이어 붙여둬도 도커가 알아서 알아듣습니다. 여기서 옵션 a는 attach를 의미합니다. 옵션 a는 도커 컨테이너가 실행이 될때, 실행되는 컨테이너에 붙어서 반환되는 값들을 콘솔에 보내줍니다.

 

컨테이너 중지 : stop & kill

컨테이너를 중지하기 위해서는 다음 명령어를 사용할 수 있습니다.

1. docker stop <컨테이너 아이디/이름>

2. docker kill <컨테이너 아이디/이름>

stop은 하던 작업을 마무리할 때 까지 기다려준 뒤(graceful) 컨테이너를 중지합니다.

kill은 하던 작업을 마무리할 때 인정사정없이 해당 컨테이너를 즉시 중지합니다.

 

컨테이너 삭제 : rm

docker rm <컨테이너 아이디/이름>

실행중인 컨테이너는 삭제할 수 없으므로, 삭제를 위해선 우선 컨테이너를 중지해야 합니다. 만약 모든 컨테이너를 한번에 삭제하고 싶다면 docker rm 'docker ps -a -q'를 입력하면 됩니다.

 

이미지 삭제 : rmi

docker rmi <이미지 아이디>

한 번에 컨테이너, 이미지, 네트워크를 모두 삭제하고 싶다면 docker system prune 명령어를 활용하면 됩니다. 당연히 실행중인 컨테이너에는 영향이 없습니다.

 

이미 실행중인 컨테이너에 명령어 전달 : exec

docker exec <컨테이너 아이디> <커맨드>

이는 run과 달리 "이미 실행되고 있는" 컨테이너에 명령어를 전달하는 커맨드입니다. 예를 들어 docker run alpine ping localhost를 통해 로컬호스트에 주기적으로 핑을 보내는 컨테이너에 exec 명령어를 통해 ls를 수행할 수 있습니다.

 

지금까지 실행중인 컨테이너에 명령 전달을 하기 위해서는 위 명령어를 이용한 docker exec -it <컨테이너 아이디> <명령어> 커맨드를 사용해야 합니다. 여기서 it 옵션은 -i (--interactive ; 표준 입력을 활성화, 표준 입력 유지)와 -t (--tty; TTY 모드를 사용, 셀을 표시하여 명령을 입력하겠다) 를 활성화하는 단축 옵션입니다. -it 옵션은 우리가 수행시키는 명령어에 대한 아웃풋을 보기 위해 옵션으로 추가해주는 겁니다.

 

하지만 위 명령어를 매번 입력하긴 귀찮으니 마지막 명령어 부분에 sh (또는 bash, zsh, powershell) 을 입력하면 쉘 터미널에 접근하여 지속적으로 실행중인 컨테이너에 명령어를 전달할 수 있습니다. -> docker exec -it cca7bdd3ef5b sh

 

하지만 나의 경우에서는 윈도우의 git bash 터미널을 이용하여 도커를 이용하곤 하는데, 이런 경우 나와 같은 에러가 뜨는 사람도 있을 것입니다.

이는 저의 git bash가 tty 방식이 아니여서 그런 거고, 이를 해결하려면

1. git bash를 해당 설정에 맞게 재설치

2. powershell을 이용하여 도커 이용

3. git bash 터미널에서 해당 명령 앞에 winpty 붙이기

와 같이 해결할 수 있습니다.

 

sh 커맨드를 통해 열어준 터미널은 우리가 일반적으로 어떤 터미널에서 나올 때 사용하는 ctrl + c 가 아닌 ctrl + d 를 통해 나올 수 있습니다.

'DEV-STUDY > Infra' 카테고리의 다른 글

Working Directory 명시하기  (0) 2023.07.23
도커 이미지 실행하기  (0) 2023.07.22
도커 이미지 생성하기  (0) 2023.07.22
도커 기본 사용 흐름 이해하기  (0) 2023.07.22
도커는 왜 쓰나요?  (0) 2023.07.22
Comments