도커 기본 명령어 및 실습
도커에서 자주 사용하는 명령어를 읽히고 실습을 진행한다.
도커 기본 명령어 및 실습
기본적으로는 공식 문서를 참고하되, 자주 사용하는 명령어 몇 개만 나열해 본다.
docker run
이미지를 생성 및 실행해 주는 명령어이다. 원래는 분리된 생성(docker create
)와 실행(docker start
)을 한번에 실행시키는 명령어이다.
위 그림은 docker run hello-wolrd
를 실행했을 때 나오는 결과이다. 중간에 메시지에 나와 있는 것을 보면 처음에 봤던 도커 아키텍처가 자연스레 생각날 것이다.
참고로 [실행할 명령어]의 경우 옵셔널한 값이다. 기본적으로는 원래 이미지에 설정된 기본 실행 명령어가 실행되지만, [실행할 명령어] 자리에 명령어를 별도로 넣어주게 되면, 기존에 설정된 값을 무시하고 내가 입력한 명령어를 실행한다. 당연히 [실행할 명령어]는 도커 이미지에 설정된 명령어야 하며, 아닐 경우 에러가 발생한다.
docker run -it [이미지 이름] ls
: 컨테이너 안의 파일 구조를 볼 수 있다.-d
옵션: 컨테이너를 시작할 때 "분리(detached
) 모드"로 백그라운드에서 실행할지 여부를 결정. 이 옵션을 따로 설정하지 않으면 기본 포그라운드 모드(default foreground mode
)로 실행되는데, 콘솔을 프로세스의 표준 입력, 출력, 표준 오류에 연결할 수 있다.-v
옵션: 볼륨의 약어(--volume
)로 볼륨을 바인딩 한다. 콜론(:
) 뒤에 나오는 파일 또는 디렉토리가 컨테이너에서 마운트 되는 경로이다. (-volume=[host-src:]container-dest[:<options>]
)-it
옵션: 아래 설명 참고
docker ps
도커의 현재 실행중인 프로세스 상태를 보여준다.
대부분은 위의 설명으로 알 수 있으나 status
에 대해서만 추가적으로 작성하자면, 아래와 같은 상태값을 지닌다.
Up: 실행중
Exited: 종료
Pause: 일시 정지
만약 실행 중인 컨테이너 뿐만 아니라 다른 컨테이너도 다 보고 싶다면 옵션을 명령어에 추가해 주면된다.
docker stop vs docker kill
컨테이너 중지 명령어 이며, 명령어 뒤에는 [중지할 container ID 또는 이름]을 입력한다.
docker stop
: 진행 중이던 작업을 모두 마치고 컨테이너를 중지한다. (docker stop
->SIGTERM
- 진행중인 프로세스 정리(Grace Period
) ->SIGKILL
)docker kill
: 즉시 컨테이너를 중지한다. (docker kill
->SIGKILL
)
docker rm
컨테이너 삭제 명령이며, 명령어 뒤에는 [중지할 container ID 또는 이름]을 입력한다.
docker rm -f redis
: 실행 중인 컨테이너를 강제로 제거
docker rmi
도커 컨테이너 뿐만 아니라 이미지를 삭제하고 싶을때 사용하는 명령어 이며, 이 명령어 뒤에는 [이미지 ID]를 입력한다. 참고로 docker images
명령어를 통해 도커 이미지 목록을 볼 수 있다.
물론 명령어도 쉽지만, 처음엔 조금 헷갈릴 수가 있는게 이미지 삭제를 바로 하면 에러 메시지가 나올 것이다. 이미지 삭제는 해당 이미지가 있는(실행중만이 아님, 실행 중이라면 당연히 정지 및 삭제 필요) 컨테이너를 모두 삭제해야 한다.
위 그림은 hello-world
이미지를 삭제하기 위한 노력이다. 처음엔 직접 꼭 이 과정을 거쳐보자. 그래야 다음 명령어의 소중함을 알게된다.
docker rm -f $(docker ps -aq --filter ancestor=hello-world)
docker image prune
:prune
은 불필요한 것을 제거한다는 의미로, 사용하지 않는 이미지만 삭제할 수 있다.
docker rm 'docker ps -a -q'
현재 중지된 모든 컨테이너를 삭제한다.
docker exec
실행중인 컨테이너에게 명령를 전달한다. 공식 문서 예제를 참고하자.
docker system [command]
docker system df
: 도커 디스크 사용량을 볼 수 있다.docker system events
: 서버로 부터 실시간 이벤트를 받는다.docker system info
: 시스템 전체 정보를 보여준다.docker system prune
: 사용하지 않는 데이터를 삭제한다. 여기에는 중지된 모든 컨테이너와 네트워크, 이미지 등이 삭제되며 삭제한 목록과 확보한 공간의 크기를 알려준다.
레디스 설치해보기
자주 사용하는 레디스를 도커 환경에서 실행해 보자.
이제 redis-cli
명령어를 쓰기 위해서는 당연히 docker
컨테이너 안에서 실행시켜 주면된다. 이때 위에서 언급한 실행 중인 컨테이너에게 명령을 전달하는 docker exec
를 이용하면 된다.
redis-cli 실행하기
-it
옵션 없이 사용할 경우 아래 그림과 같이 레디스 클라이언트가 실행되자마자 종료되서 명령어를 입력할 수 없게 된다.
그래서 -i: interactive
(대화형), -t: terminal
(터미널) 옵션을 추가하여 레디스 클라이언트가 유지되면서 터미널로 메시지를 보낼 수 있게 해주었다.
실행 중인 컨테이너의 쉘 환경에 접속하는 법
위 명령어를 약간만 수정해 주면된다.
참고로 쉘 환경을 나오는 단축키는 Control + D
이다.
Last updated