도커(이미지, 간단한 명령어들)
이미지란?
- 이미지는 응용 프로그램을 실행하는데 필요한 모든 것을 포함하고 있음.
이미지로 컨테이너 만드는 순서
1. DOcker 클라이언트에 docker run <이미지> 입력
2. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 옮겨 줌.
3. 이미지에서 가지고 있는 명령어 (컨테이너가 실행될 때 사용될 명령어)를 이용해서 응용 프로그램을 실행시켜줌.
이러면 이미지 안에는 시작시 실행 될 명령어, 파일 스냅샷(파일)이 들어가 있음
이러한 이미지로 실행하면 컨테이너 안에서 응용프로그램이 실행됨!
간단한 이미지 내부 파일의 구조 보는 법
=> docker run (이미지 이름) (실행시킬 명령어)
ex) docker run alpine ls
=> alpine 이미지 안의 리스트를 보여줌
현재 실행중인 컨테이너 나열
=> docker ps
원하는 항목만 보기
=> docker ps --format 'table{{.Names}}\table{{.Image}}'
모든 컨테이너 나열
=> docker ps -a
컨테이너 이름 변경
=> docker rename origin-name changed-name
컨테이너의 생명주기
생성(create) -> 시작(start) -> 실행(running) -> 중지(stopped) -> 삭제(deleted)
시작할 때는 -a (attach) 명령어를 붙여야 함!
Stop은 자비롭게 그동안 하던 작업들을 완료하고 컨테이너를 중지 시킴
Kill은 Stop과 달리 어떠한 것도 기다리지 않고 바로 컨테이너를 중지 시킴
중지된 컨테이너를 삭제하고 싶다면
=> docker rm <ID/이름>
모든 컨테이너를 삭제하고 싶다면
=> docker rm 'docker ps -a -q'
이미지를 삭제하고 싶다면
=> docker rmi <이미지 id>
한번에 컨테이너, 이미지, 네트워크 모두 삭제하고 싶다면 (실행중인 컨테이너에는 영향을 주지 않음)
=> docker system prune
이미 실행중인 컨테이너에 명령어를 전달하고 싶다면
=> docker exec <컨테이너 아이디>
1. docker run은 새로 컨테이너를 만들어서 실행
2. docker exec은 실행중인 컨테이너에 명령어를 전달
레디스를 이용한 컨테이너 이해
redis 서버를 가동
=> docker run redis
redis-cli 가동
=> docker exec -it <컨테이너 아이디> redis-cli
*i : interactive
t : terminal
-it를 붙여줘야 명령어를 실행한 후 계속 명령어를 적을 수 있다.
즉 컨테이너 밖에서 redis-cli명령어는 안 먹히고 컨테이너 안에서 실행해야 하므로 exec 명령어 사용!!!
=> docker exec -it <컨테이너 아이디> 명령어
좀더 쉽게 하기 위해서는 docker exec -it <컨테이너 아이디> sh로 접속해서 작업!!
나올때는 control + D 로 환경에서 나올 수 있음.