docker ps
CONTAINER ID
: 컨테이너의 고유한 아이디 해쉬값IMAGE
: 컨테이너 생성 시 사용한 도커 이미지COMMAND
: 컨테이너 시작 시 실행될 명령어이며, 대부분 이미지에 내장되어 있으므로 별도 설정 필요 없음CREATED
: 컨테이너 생성 시간STATUS
: 컨테이너의 상태(실행중 Up, 종료 Exited, 일시정지 Pause)PORTS
: 컨테이너가 개방한 포트와 호스트에 연결된 포트로, 특별한 설정하지 않으면 출력되지 않음NAMES
: 컨테이너 고유 이름 (컨테이너 생성 시 --name 옵션으로 설정하지 않으면 도커 엔진이 임의로 설정)docker ps -a
docker create <이미지_이름>
docker start <컨테이너or이미지_이름>
docker run <이미지_이름>
docker stop <컨테이너or이미지_이름>
docker kill <컨테이너or이미지_이름>
stop
은 그 동안 하던 작업들을 완료하고 컨테이너를 중지시키지만, kill
은 기다리지 않고 바로 컨테이너 중지시켜버리는게 차이점이다!
실행 중인 컨테이너는 먼저 중지 후 삭제가 가능하다.
docker rm <컨테이너or이미지_이름>
모든 컨테이너를 삭제하기 위해서는
docker rm `docker ps -a -q`
docker rmi <이미지_이름>
docker system prune
단, 실행 중인 컨테이너에는 영향을 주지 않는다.
docker exec <컨테이너_아이디>
docker run <이미지_이름>
docker exec
는 이미 실행 중인 컨테이너에 명령어를 전달하지만, docker run
은 새로 컨테이너를 만들어서 실행한다.
docker exec -it <컨테이너_아이디> sh
쉘 나오기 위해서는 ctrl+D
먼저 레디스 서버가 작동하고 있어야하고, 그 이후에 레디스 클라이언트 실행 후 명령어를 레디스 서버에 전달해야 한다.
docker run redis
redis-cli
그냥 단순히 이렇게 하면 에러가 난다.(Connection refused
)
레디스 클라이언트가 레디스 서버가 있는 컨테이너 밖에서 실행을 하려고 하기 때문이다. (레디스 서버에 접근을 할 수가 없어서 에러 발생)
그러니 레디스 클라이언트도 컨테이너 안에서 실행할 수 있게 변경하자
docker exec - it <컨테이너_아이디> redis-cli