[도커 #4] 도커 명령어

[도커 #4] 개발자가 꼭 알아야 할 도커 명령어 정리
도경원's avatar
Jul 29, 2025
[도커 #4] 도커 명령어

1. 이미지 다운로드

docker pull tomcat:jre21-temurin-noble
 

2. 이미지 검색

docker images
notion image
 

3. 이미지 실행하기

docker run → 도커 엔진한테 컨테이너 실행 명령을 내린다.
-it 터미널 모드를 좀 열어줘!!
이미지명 → 이걸 프로세스화 시킨다.
bash (우분투를 실행시킬껀데, 그 우분투안에서 어떤 프로그램을 실행시켜줄까?)
 
docker run -it tomcat bash
 

4. 실행중인 컨테이너 확인하기

docker ps (현재 실행 중인 컨테이너만 보여줌) docker ps -a (종료된(Exited) 컨테이너도 포함됨)
 

5. 명령어 넣어서 실행하기

docker run -it tomcat echo hello
notion image
 

6. 데몬+백그라운드로 실행하기

docker run -dit tomcat
아래는 기본 cmd 이다.
notion image
 

7. 컨테이너 종료

docker stop 컨테이너아이디
 

8. 컨테이너 삭제

docker rm 컨테이너아이디
 

9. 모든 컨테이너 정지 + 삭제

docker stop $(docker ps -aq) docker rm $(docker ps -aq)

10. 현재 이미지 확인 및 삭제

docker images docker rmi [이미지 ID 또는 REPOSITORY:TAG]

11. 모든 이미지 삭제

docker rmi $(docker images -q)

12 . 포트포워딩

docker run -dit -p 8888:8080 tomcat
notion image
포트 포워딩은 “밖에서 온 요청을 안으로 잘 연결해주는 터널”이다. 도커에선 컨테이너 서비스를 외부와 연결해주는 핵심이다.

포트포워딩은 왜 필요한가 ?

  • 컨테이너는 외부와 단절된 격리 환경이다.
  • “내부 포트”와 “외부 포트”는 다를 수 있다.
    • 컨테이너 내부에서 8080 포트로 서버가 돌아가도
    • 내 컴퓨터에서 8080포트를 이미 다른 앱이 쓰고 있을 수도 있음
    • 이럴 때 외부 포트만 바꿔서 접속 경로를 다르게 설정 가능
    • 예: -p 8888:8080 → 사용자 입장에서는 8888, 내부는 여전히 8080
  • 보안, 접근 제어, 인프라 설계 때문에

13. 실행중인 컨테이너 접속하기

docker attach [컨테이너 아이디]
docker exec -it 컨테이너아이디 bash
attach는 메인 프로세스에 “붙는” 거고, exec는 명령 하나 실행하는 것이다.
실무에서는 컨테이너 안에 접속하고 싶으면 무조건 exec -it 컨테이너 bash가 맞고, attach는 로그를 직접 보고 싶을 때만 제한적으로 사용해야 한다.

14. 이미지 굽기

docker commit [CONTAINERID] [도커허브아이디/생성할이미지명]:[태그] 예시) docker commit b7e6 doythan/mytom:1.0

15. 도커 허브 업로드

docker login
docker push [도커허브아이디/생성할이미지명]:[태그] 예시) docker push doythan/mytom:1.0

16. 도커 허브 다운로드

docker pull [도커허브아이디/생성할이미지명]:[태그]
 
컨테이너는 종료되면 상태를 다 잃음(내가 설치, 세팅 한 것 등등 ) 영구히 보관할라면 볼륨을 공부해야함 이미지를 굽기 위해서는 컨테이너를 죽이면 안된다.
 
컨테이너를 실행시킬때 데몬이어야지 안빠져나온다. . 데몬 개념 완벽히 잡자 dit, it, bash 붙이면 프로그램이 진행되는 이유 백그라운드, 포그라운드 개념 등등
 
이미지를 굽기전에는 기본 command를 설정해야함. 그 커맨드가 데몬이면 안죽음. 근데 그게 아니라면 -dit를 붙여야함(옵션에) 그리고 기본 데몬이 아닌 기본 커맨드가 있었어도 마지막 명령어에 -dit 뒤에 새로운 커맨드를 적으면 오버라이딩 됨.
 
이미지를 쓰고싶으면
  1. 도커허브에서 찾고
  1. 다운받음
  1. 도커 run -it 이미지 명으로 실행하면됨, 뭐 내가 폴더를 만들고 싶으면 bash를 적고, 데몬으로 돌리고 싶으면 dit를 하고 기존 커맨드를 쓰고 싶으면 기존 커맨드가 먼지 찾아보고 이런식으로 진행
 
docker run -dit -p 8888:8080 tomcat

핵심 개념 정리

1. 컨테이너의 휘발성

  • 컨테이너는 기본적으로 일회성이다.
  • apt install, 파일 생성 등 내부에서 작업한 내용은 컨테이너가 종료되면 다 사라진다.
  • 영구 보관하고 싶다면 "볼륨(Volume)"을 사용해야 한다.

2. 이미지를 만들기 전엔 컨테이너가 살아 있어야 한다

  • 이미지를 만들기 위해선 컨테이너 안에서 작업을 해야 함
  • 작업 다 하고 docker commit으로 이미지 생성
  • 컨테이너가 죽으면 이미지 굽는 타이밍 놓침

3. 데몬(Daemon), 포그라운드 vs 백그라운드 개념

  • 데몬: 백그라운드에서 계속 실행되는 프로세스
  • 기본적으로 컨테이너는 포그라운드에서 명령어 1개 실행 → 끝나면 컨테이너도 종료
  • 그래서 bash 같은 대기성 커맨드나, 데몬 프로세스가 필요함
  • 아니면 직접 dit 옵션으로 백그라운드 실행을 강제해야 함

4. dit, it, bash 의미

옵션
설명
-d
detached (백그라운드 실행)
-i
interactive (표준 입력 연결)
-t
tty (가상 터미널 연결)
bash
컨테이너 안에서 실행할 기본 명령어 (대기 상태 유지용)
-dit bash = 백그라운드로 실행되면서 bash가 계속 살아 있게 됨

5. 기본 커맨드 오버라이딩

  • 어떤 이미지는 기본 명령어를 갖고 있음 (CMD 또는 ENTRYPOINT)
  • 예: tomcat은 기본적으로 catalina.sh run 실행함
  • 근데 우리가 docker run -dit tomcat bash처럼 명령어를 뒤에 붙이면 기존 CMD를 덮어씀

6. 도커 이미지 쓰는 일반적인 순서

  1. Docker Hub에서 이미지 검색
  1. docker pull로 다운로드 (또는 run이 알아서 pull함)
  1. 실행:
      • bash 작업하고 싶으면 → docker run -it ubuntu bash
      • 백그라운드로 서비스 돌리고 싶으면 → docker run -dit -p 8888:8080 tomcat

7. 전체 흐름 사진

notion image
Share article

Gyeongwon's blog