어제에 이어서 학습한 내용을 이어서 정리해본다.
1. Docker CLI 명령어
컨테이너 생성 및 실행
이미지를 바탕으로 컨테이너를 생성하려면 create 명령어를 이용하면 된다. 컨테이너를 실행하지 않고 생성만 하는 경우는 드물어서 잘 사용하지 않는 명령어이다.
# docker create 이미지명(:태그명)
$ docker create redis
컨테이너를 실행하려면 start 명령어를 이용하면 된다.
# docker start 컨테이너명 or 컨테이너 ID
$ docker start redis
컨테이너 조회, 중지 및 삭제
컨테이너를 조회하려면 ps 명령어를 이용하면 된다. 작동을 멈춘 컨테이너까지 조회하려면 -a 옵션을 붙이면 된다.
# 실행중인 컨테이너 조회
$ docker ps
# 중지된 컨테이너까지 같이 조회
$ docker ps -a
조회하면 아래와 같이 컨테이너 ID와 이름등 여러가지 정보를 확인할 수 있다.
컨테이너를 중지하려면 stop 또는 kill 명령어를 사용하면 된다. kill 명령어의 경우는 애플리케이션이 정상적으로 종료할 수 있는 시간을 주지않고 즉시 종료시키기 때문에 데이터가 손실될 가능성이 있다.
또한 이미지와 마찬가지로 중지 및 삭제시 컨테이너 ID 전체를 입력할 필요없이 식별 가능한 앞의 일부분만 입력해도 된다.
# 컨테이너 중지
$ docker stop (컨테이너명 or 컨테이너 ID)
# 컨테이너 즉시 중지
$ docker kill (컨테이너명 or 컨테이너 ID)
컨테이너를 삭제하려면 rm 명령어를 이용하면 된다. 아래처럼 여러가지 옵션이 있다. 선택해서 사용하면 된다.
# 중지되어 있는 특정 컨테이너 삭제(실행중인 컨테이너 삭제 불가)
$ docker rm (컨테이너명 or 컨테이너 ID)
# 실행되고 있는 특정 컨테이너 삭제
$ docker rm -f (컨테이너명 or 컨테이너 ID)
# 중지되어 있는 모든 컨테이너 삭제
$ docker rm $(docker ps -qa)
# 실행중인 컨테이너 까지 포함하여 모든 컨테이너 삭제
$ docker rm -f $(docker ps -qa)
위의 명령어 이외에도 중지된 컨테이너를 삭제하려면 docker container prune 명령어를 사용하면 된다. 그냥 사용하면 정말로 컨테이너를 삭제할 것인지 물어보는데, 이 확인 과정을 거치지 않으려면 -f 옵션을 추가하면 된다.
# 중지된 컨테이너 모두 삭제
$ docker container prune
# 명령어를 실행할지 확인하는 과정을 거치지 않으려면 -f 옵션을 추가
$ docker container prune -f
컨테이너 생성과 실행 (run)
docker run 명령어를 이용하면 컨테이너의 생성과 실행을 한 번에 할 수 있다. 만약에 로컬에 다운받은 이미지가 없다면 DockerHub에서 이미지를 다운받아서 실행시킨다.
# docker run 이미지명(:태그명)
$ docker run redis
위와 같이 그냥 run 명령어로만 컨테이너를 실행시키면 포그라운드에서 실행되기 때문에 추가적인 조작이 어렵다.
백그라운드에서 컨테이너를 실행시키려면 -d 옵션을 이용하면 된다.
# docker run -d 이미지명(:태그명)
$ docker run -d redis
컨테이너에 이름을 붙이려면 --name 옵션을 이용하면 된다.
# docker run -d --name (컨테이너 명) 이미지명(:태그명)
$ docker run -d --name moomoo-redis redis
위와 같이 그냥 redis 컨테이너를 띄우면 백그라운드에서 redis가 실행되지만, 호스트와의 포트를 매핑하지 않아서, 호스트에서 직접 redis에 접근이 불가능하다. 컨테이너 내부에서는 6379 포트에서 실행되고 있지만, 이 포트가 외부에 노출되지 않았기 때문에 다른 애플리케이션이나 외부에서 접근이 불가능하다.
따라서 -p 옵션을 이용해 포트 매핑을 해주어야한다.
# docker run -d -p (호스트 포트):(컨테이너 포트) 이미지명(:태그명)
$ docker run -d -p 6379:6379 redis
위와 같이 명령어를 입력해 실행하면, 도커를 실행하는 호스트의 6379번 포트를 컨테이너의 6379번 포트로 연결하도록 설정하게 된다.
'Docker' 카테고리의 다른 글
Docker Compose 개념 및 정리 (0) | 2024.12.02 |
---|---|
DockerFile 작성법 (0) | 2024.11.29 |
Docker Volume 개념 및 활용 (0) | 2024.11.28 |
Docker 기본 개념 및 CLI 명령어 (3) (0) | 2024.11.27 |
Docker 기본 개념 및 CLI 명령어 (1) (0) | 2024.11.25 |