성장일기

내가 보려고 정리하는 공부기록

인프라/도커

[Docker] 도커 이미지로 컨테이너 올리기

와나나나 2025. 9. 25. 16:42
728x90

지난 게시글에 이어 오늘은 도커 이미지를 받아서 이를 이용해 컨테이너를 올리는 방법에 대해 정리하려고 한다.

 

해당 게시글은 인프런 비전공자도 이해할 수 있는 Docker 입문/실전 강의를 듣고 정리했습니다.

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84

 

비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 13,897명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를

www.inflearn.com

 

 

도커 컨테이너와 이미지에 대한 개념은 아래 게시글에 정리해두었다.

https://wanna-developer02.tistory.com/198

 

[Docker] 도커란 무엇일까?

프로젝트를 하면서 처음으로 도커를 사용해봤는데, 잘 모르는 상태로 사용하다보니 어려움을 겪었다. 그래서 이 기회에 도커를 정리해보려고 한다! 해당 게시글은 인프런 비전공자도 이해할 수

wanna-developer02.tistory.com

 

 

목차는 다음과 같다

  • 도커 이미지 다운로드
  • 이미지 조회, 삭제
  • 컨테이너 생성하고 조회하기
  • 컨테이너 중지, 삭제
  • 컨테이너 로그 확인하기
  • 실행중인 컨테이너 내부에 접속하기

1. 도커 이미지 다운로드 하기

mysql, redis 등 사람들은 이미 많은 도커 이미지를 도커 허브에 올려두었다. 이런 것들은 이미지를 만들지 않고, 도커허브에서 받아와 사용하면 된다.

 

도커 허브는 이미지를 저장하고, 다운받을 수 있는 일종의 저장소 역할을 한다! 여기에서 이미지를 받아서 사용하면 되는데, 이때 사용하는 명령어를 알아보자.

 

docker pull [이미지명]:[태그명]

 

태그특정 버전을 의미한다. 특정한 버전을 받아오고 싶다면 태그명을 쓰면 되고, 그냥 최신버전을 받아오고 싶다면 이미지명만 작성해도 무방하다!

 

도커 허브

 

이런식으로 이미지들을 볼 수 있고, 세부적으로 이미지 이름과 도커 허브 작성방법까지 상세하게 나와있다!

 

 


2. 이미지 조회, 삭제

이미지 조회

이미지를 불러오고 나서 잘 불러왔는지 확인해야한다. 이렇게 다운받은 이미지를 조회하는 명령어를 알아보자

 

docker image ls

 

이 명령어를 이용하면 다운받은 모든 이미지를 조회할 수 있다.

  • REPOSITORY : 이미지 이름
  • TAG: 이미지 태그명(버전)
  • IMAGE ID: 이미지 ID 
    • 이거를 이용해 이미지를 삭제할 수 있다
  • CREATED: 생성날짜 
  • SIZE: 이미지 크기

 

이미지 삭제

다음 명령어를 이용해 특정 이미지를 삭제할 수 있다

docker image rm [이미지 ID 또는 이미지명]

 

이미지 ID로 삭제할 때에는 전체 ID가 아닌 일부만 입력해도 된다! 위 사진에서 예를 들면 redis를 삭제하고 싶은 경우

docker image rm 9d1 만 작성해도 삭제할 수 있다는 것이다!

 

전체 이미지를 한번에 삭제하는 명령어는 아래와 같다.

// 컨테이너에서 사용하지 않고 있는 이미지만 전체 삭제
docker image rm $(docker images -q)

// 컨테이너에서 사용하고 있는 이미지를 포함해서 전체 이미지 삭제
docker image rm -f $(docker images -q)

 

이때 실행중인 컨테이너에서 사용하고 있는 이미지는 삭제할 수 없기 때문에, 삭제하기 전 컨테이너를 중지시킨 후 삭제해야 한다.

 

 


3. 컨테이너 생성하고 실행하기

컨테이너 생성, 실행

이미지를 이용해 컨테이너를 생성한다. 단, 이 명령어를 이용하면 컨테이너가 생성만 되고,  실행되지는 않는다.

docker create [이미지명]

 

정지되어있는 컨테이너를 실행시킬 때에는 다음과 같은 명령어를 작성하면 된다.

docker start [컨테이너명 또는 컨테이너ID]

 

 

사실 위처럼 생성만 하는 명령어는 잘 사용하지 않는다. 아래 명령어는 이미지를 다운받고, 컨테이너를 생성해서 실행하는 것까지 모두 해주는 참 많이 쓰는 명령어이다! 

 

참고로 태그명은 안 써도 된다. 쓰지 않는 경우 최신 버전으로 다운받아 실행된다. 또, 로컬에 해당 이미지가 있는 경우에는 그냥 사용이 되고, 없는 경우에는 Dockerhub에서 다운받아 실행시킨다!

docker run [이미지명:태그명]
docker run -d [이미지명:태그명]

 

-d 옵션은 백그라운드 실행 명령어이다! 이걸 붙여야 뭔가 다른 작업이 가능하다.  ⭐

 

 

포트매핑

도커에 올린 어플리케이션을 로컬에서 접근하려면 포트끼리의 매핑을 해주어야 한다! 이를 컨테이너 실행할 때 옵션을 통해 해줄 수 있다.

docker run -d -p [호스트포트]:[컨테이너포트] [이미지명:태그명]

 

예를 들어 nginx를 도커에서 실행한다고 했을 때, docker run -d -p 4000:80 nginx  명령어를 이용하여 로컬에서 4000번 포트를 이용해 도커 속 nginx에 들어갈 수 있게 설정할 수 있다. 이렇게 하면 호스트pc에서 localhost:4000 을 통해 도커 속 nginx에 접속이 가능하다.

 

 

 

4. 컨테이너 조회, 중지, 삭제하기

컨테이너 조회

모든 컨테이너를 조회하기 위해서는 다음과 같은 명령어를 이용한다. -a 옵션을 주지 않으면 현재 실행중인 컨테이너만 조회된다!

docker ps -a

 

 

컨테이너 중지

컨테이너를 중지시키는 명령어는 2가지인데, 보통 stop을 많이 사용한다! kill은 먹통일 때 비정상적으로 종료시키는 것을 의미한다. 

docker stop 컨테이너명

docker kill 컨테이너명

 

 

컨테이너 삭제

옵션을 사용하지 않으면, 기본적으로는 중지되어있는 컨테이너만 삭제가 가능하다!

docker rm [컨테이너명 또는 컨테이너ID]

 

여기서 실행중인 컨테이너를 삭제하고 싶다면 -f 옵션을 넣어주면 된다.

docker rm -f [컨테이너명 또는 컨테이너ID]

 

추가로 아래 명령어를 이용하면 중지되어있는 모든 컨테이너를 삭제할 수 있고, 마찬가지로 -f 옵션을 넣으면 실행중인 모든 컨테이너도 삭제가 가능하다.

docker rm $(docker ps -qa)

 

 


5. 컨테이너 로그 조회하기

컨테이너를 실행시키면, 해당 어플리케이션이 잘 실행되고 있는지 확인을 해야한다. 이때 도커 속 어플리케이션에 들어가지 않고 컨테이너에서 발생한 로그를 확인할 수 있다! 프로젝트를 하면서 어쩌면 가장 중요한 부분이 아닐까 싶다.

// 특정 컨테이너 모든 로그 조회
docker logs [컨테이너명]

// 최근 로그 N줄만 조회
docker logs --tail N [컨테이너명]

// 기존 로그 포함 실시간으로 생성되는 로그 확인하기
docker logs -f

 

 

번외로 필자는 아래처럼 최근 로그 N줄 확인하는 명령어를 주로 사용한다!

docker logs --tail 200 -f [컨테이너명]

 

줄의 수를 0으로 넣으면 기존 로그는 조회하지 않고 생성되는 로그를 실시간으로 볼 수 있다!

 

 

 


6. 실행중인 컨테이너 내부에 접속하기 (exec -it)

컨테이너는 컴퓨터 속 작은 컴퓨터라고 생각해도 되기 때문에, 그 컴퓨터 속에 접속할 수 있다! 이때 이용하는 명령어는 다음과 같다.

docker exec -it [컨테이너명] bash

 

컨테이너에서 나오려면 exit 을 입력하면 된다!!

 

 


도커를 사용하기 위한 기본적인 명령어를 살펴보았다! 다음게시글에서는 도커 이미지를 만들어볼 예정이다!

'인프라 > 도커' 카테고리의 다른 글

[Docker] 도커란 무엇일까?  (0) 2025.09.18