본문 바로가기
Docker

[Docker] 도커 컨테이너, 이미지 CLI

by 맨날개발 2025. 4. 19.
비전공자도 이해할 수 있는 Docker 입문/실전 (박재성) 

 

🎈 도커 허브

도커허브란 이미지를 저장, 다운로드 받을 수 있게 해주는 저장소 역할을 하는 서비스이다.

개인이 직접 업로드한 이미지뿐 아니라, 다른 사람이 공개한 이미지를 다운받을 수도 있다.

https://www.docker.com/products/docker-hub/

 

 

📯 이미지

1️⃣ 이미지 다운로드

✅ docker pull 명령어를 통해 도커 허브에서 이미지를 다운받을 수 있다.

docker pull 이미지명
docker pull 이미지명:태그명
  • 이미지명만 작성하는 경우 태그가 latest인 이미지를 다운받아준다.
  • 태그명을 추가해서 원하는 버전의 이미지를 다운받을 수 있다.

 

docker pull nginx

 

✨ 보통 컨테이너 생성과 동시에 자동으로 이미지를 다운받기 때문에 자주 사용되지 않는 명령어라고 한다.

 

2️⃣ 이미지 조회

✅ docker image ls 명령어를 통해 현재 다운로드 받은 이미지를 확인할 수 있다.

docker image ls
REPOSITORY  TAG  IMAGE ID  CREATED  SIZE
nginx latest 4e1b6bae1e48 45 hours ago  
  • CREATED는 도커 허브에 업로드된 시간을 의미한다.

 

3️⃣ 이미지 삭제

✅ docker image rm 명령어를 통해 이미지를 삭제할 수 있다.

docker image rm IMAGEID
  • 중복되지 않는 범위내에서 아이디의 일부만 입력해도 삭제가 가능하다.
  • 이미지는 컨테이너에서 사용하고 있으면 삭제가 불가능하다.

 

컨테이너에서 사용하고 있는 이미지를 삭제하는 경우 -f 옵션을 사용하면 삭제가 가능하다.

docker image rm -f IMAGEID
  • 실행중인 컨테이너에서 사용하고 있는 이미지는 삭제가 불가능하다.
  • 삭제하기 위해서는 컨테이너를 중지하고 삭제가 가능하다.
✨ 컨테이너에서 사용하는 것과 실행중인 컨테이너는 구분할 필요가 있다.

 

 

컨테이너에서 사용하고 있지 않은 모든 이미지를 삭제할 수 있다.

docker image rm $(docker images -q)
  • docker images -q : 현재 로컬에 저장된 모든 이미지의 아이디만을 반환해준다.

 

실행중이지 않은 컨테이너에서 사용하고 있는 이미지 포함 모든 이미지를 삭제한다.

docker image rm -f $(docker images -q)
  • 실행중인 컨테이너에서 사용하고 있는 이미지는 삭제 불가능하다.

 

🛒 컨테이너

1️⃣ 컨테이너 생성

✅ docker create 명령어를 통해 컨테이너를 생성할 수 있다.

docker create 이미지명
  • create 뒤에오는 이미지명를 바탕으로 컨테이너를 생성시켜 준다.
  • 로컬에서 이미지가 존재하는 경우 로컬의 이미지를 사용한다.
  • 로컬에 이미지가 존재하지 않는 경우 도커허브에서 자동으로 다운받는다.
  • 이미지명에 해당하는 이미지가 존재하지 않는 경우 생성할 수 없다.

 

2️⃣ 컨테이너 실행

✅ docker start 명령어를 통해 컨테이너를 실행시킬 수 있다.

docker start [컨테이너ID | 컨테이너이름]

 

3️⃣ 컨테이너 중지

✅ docker stop 명령어를 통해 컨테이너를 중지시킬 수 있다.

docker stop [컨테이너ID | 컨테이너이름]
  • 일반적으로 중지시킬 때 사용하는 것으로 컨테이너의 정상 중지 시 사용하면 된다.
  • 컨테이너가 하던 작업을 정리할 수 있도록 유예기간을 준다.

 

✅ docker kill을 통해 컨테이너를 강제로 종료할 수 있다.

docker kill [컨테이너ID | 컨테이너이름]
  • 작업에 대한 정리 없이 즉시 중지시킨다.
  • 일반적인 중지 방법이 아니기 때문에 docker stop을 사용할 수 없는 경우에만 사용하자.

 

4️⃣ 컨테이너 삭제

✅ docker rm 명령어를 통해 컨테이너를 삭제시킬 수 있다.

docker rm [컨테이너ID | 컨테이너이름]

 

✅ -f 옵션으로 실행중인 컨테이너를 삭제할 수 있다.

docker rm -f [컨테이너ID | 컨테이너이름]

 

✅ 다음 명령어를 통해 중지된 모든 컨테이너를 삭제할 수 있다.

docker rm $(docker ps -qa)
  • docker ps -qa : 현재 설치된 모든 컨테이너의 아이디만 반환한다.

 

5️⃣ 컨테이너 생성 및 시작을 한번에

✅ docker run 명령어를 통해서 컨테이너를 생성하고 실행도 할 수 있다.

docker run 이미지명
  • 다른 옵션을 추가하지 않으면 포그라운드에서 실행된다.
  • 이 명령어는 생성 + 시작 이기 때문에 실행 마다 매번 새로운 컨테이너가 생성된다.
  • 이미 생성한 컨테이너를 실행할 때는 start를 사용하자.

 

✅ -d 옵션을 사용하면 백그라운드에서 실행할 수 있다.

docker run -d 이미지명
  • 이미지명이 항상 가장 뒤에 와야 한다.

 

✅ --name 옵션을 사용하면 컨테이너에 이름을 지정할 수 있다.

docker run --name 이름 이미지명

 

✅ -p 옵션을 사용해서 호스트 컴퓨터와 컨테이너 컴퓨터간의 포트포워딩을 설정할 설정할 수 있다.

docker run -p [호스트포트]:[컨테이너포트] 이미지명
  • 80번 포트를 사용하고 있는 nginx 컨테이너가 존재한다고 하자.
  • 이때, 호스트 컴퓨터에서 80번 포트로 접속하는 경우 nginx 포트로 접속하는 것이 아니라 호스트 컴퓨터의 80번 포트로 접속하는 것이다.
  • 포트포워딩을 설정하면 설정한 호스트포트로 접속하는 경우 컨테이너의 포트로 연결해주는 기능이다.

 

6️⃣ 컨테이너 조회

✅ docker ps 명령어를 통해 컨테이너를 조회할 수 있다.

docker ps
  • 현재 실행중인 컨테이너만 조회 가능하다.

 

✅ -a 옵션을 통해 설치된 모든 컨테이너를 조회할 수 있다.

docker ps -a
  • 실행 중 뿐 아니라 중지 상태인 컨테이너까지 조회할 수 있다.

 

7️⃣ 컨테이너 진입

✅ docker exec 명령어를 통해 컨테이너에 접속할 수 있다.

docker exec -it 컨테이너ID bash
  • 컨테이너에 접속하고 bash로 접속한다.
  • exec는 컨테이너의 프로그램을 실행시켜주는 명령어인데, bash 프로그램을 실행시켜서 컨테이너에 직접 명령어를 입력가능하게 해주는 것이다.

 

8️⃣ 컨테이너 로그

✅ docker logs 명령어를 통해 컨테이너의 로그를 확인할 수 있다.

docker logs [컨테이너ID | 컨테이너이름]
  • 중지 된 컨테이너의 로그도 확인이 가능하다.

 

✅ --tail 줄수 옵션을 통해 해당 줄수만큼의 로그를 확인할 수 있다.

docker logs --tail 줄수 [컨테이너ID | 컨테이너이름]
  • 가장 최신의 로그에서 해당 줄수만큼 보여준다.

 

✅ -f 옵션을 통해 실시간으로 생성되는 로그를 확인할 수 있다.

docker logs -f [컨테이너ID | 컨테이너이름]
  • 기존 로그를 출력하고 이후에는 실시간으로 생성되는 로그도 보여준다.

 

✅ 아래 명령어를 통해 기존 로그는 생략하고 실시간으로 생성되는 로그만 확인 가능하다.

docker logs --tail 0 -f [컨테이너ID | 컨테이너이름]
  • 줄수를 0으로 해서 기존건 안보고 실시간으로 쌓이는 것만 확인 가능하다.

'Docker' 카테고리의 다른 글

[Docker] Dockerfile 만들어보기  (0) 2025.05.04
[Docker] 도커 볼륨  (0) 2025.04.26