Docker 명령어와 컨테이너 이해 (계속 추가)
기본적인 도커 클라이언트 명령어 알아보기
-- 현재 실행중인 컨테이너 나열
docker ps
-- 모든 컨테이너 나열
docker ps -a
-- 원하는 항목만 보기
docker ps --format 'table{{.Names}}'
docker ps --format 'table{.Names}}\t {{.Image}}'
(현재 실행중인) 컨테이너의 모든 항목 나열
원하는 항목만 나열할 때
docker run <이미지 이름> 의 내부
- 위 명령어는 docker create <이미지 이름>
과 docker start <컨테이너 아이디/이름>
으로 이루어진 명령어다.
- docker create <이미지 이름> 명령어는 이미지의 스냅삿을 하드 디스크에 저장하고,
- docker start <컨테이너 아이디/이름> 은 디스크에 저장된 이미지를 CPU 메모리에 적재시켜 실행한다.
docker process 중단
docker stop <컨테이너 아이디>
docker kill <컨테이너 아이디>
두 명령어 모두 실행중인 도커 프로세스를 중단시키지만 차이가 존재한다.
stop 명령어는 해당 프로세스가 전송중인 메시지를 마저 보낸 후 종료되고,
kill 명령어는 입력 즉시 해당 프로세스를 중지 시키는 차이점이 있다.
docker 컨테이너 삭제
도커 컨테이너를 삭제하기 위해선 먼저 실행중인 프로세스를 중지시켜야 한다.
-- 정지된 컨테이너 삭제
docker rm <아이디/이름>
-- 모든 도커 컨테이너 삭제
docker rm `docker ps -a -q`
-- 이미지 삭제
docker rmi <이미지 id>
-- 한번에 사용하지 않는 모든 컨테이너, 이미지, 네트워크 삭제
docker system prune
모든 도커 컨테이너를 삭제하는 명령어를 수행 시, 아래처럼 현재 실행중인 컨테이너
는 삭제되지 않고 남아있는 것을 확인할 수 있다.
현재 실행중인 컨테이너에 명령어 전달
docker exec <컨테이너 아이디/이름> ls
현재 실행중인 컨테이너에 대해 exec 키워드
를 입력하면 명령어를 전달할 수 있다. exec + ls
를 전달하여 현재 컨테이너의 디렉토리를 확인해 볼 수 있다.
Redis 를 통한 컨테이너의 이해
- 도커에서 레디스를 실행하려면 우선 redis 서버를 먼저 실행해야한다.
- 그 후 redis-cli 명령어로 레디스 클라이언트를 실행한다. 하지만 redis-cli 명령어는 레디스 서버가 실행중인 도커 컨테이너 내부에서 실행해야 하기 때문에 별도의 명령어를 추가해야 한다.
docker exec -it <컨테이너 아이디/이름> redis-cli
를 입력해주자.- -it 옵션의 의미 :
-i
interactive,-t
terminal, 즉interactive terminal
이란 의미로, redis server 내부에서도 터미널을 이용할 수 있게 해준다.
- -it 옵션의 의미 :
* -it 명령어가 없으면 redis 서버에 들어간 후 곧 바로 나오게 된다.
실행중인 컨테이너에서 터미널 사용하기
docker exec -it <컨테이너 아이디/이름> sh
명령어를 사용하면 컨테이너 내부의 쉘 / 터미널 환경으로 접속할 수 있다.
shell 환경을 빠져나올 땐 cmd + C 가 아닌 cmd + D 를 사용한다.
컨테이너와 이미지의 차이는?
컨테이너는 코드와 모든 종속성을 패키지화 하여 응용 프로그램이 하나의 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있는 소프트웨어의 표준 단위.
컨테이너 이미지는 코드, 시스템 라이브러리 및 설정 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적인 실행 가능 소프트웨어 패키지를 의미한다. 이미지는 결국 런타임에 컨테이너가 되다.