![[도커 #4] 도커 명령어](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog-custom%3Ftitle%3D%255B%25EB%258F%2584%25EC%25BB%25A4%2B%25234%255D%2B%25EB%258F%2584%25EC%25BB%25A4%2B%25EB%25AA%2585%25EB%25A0%25B9%25EC%2596%25B4%26tag%3DTemplate%2B1%26description%3D%26template%3D3%26backgroundImage%3Dhttps%253A%252F%252Fsource.inblog.dev%252Fog_image%252Fdefault.png%26bgStartColor%3D%2523a8e8ec%26bgEndColor%3D%2523a8e8ec%26textColor%3D%2523000000%26tagColor%3D%2523000000%26descriptionColor%3D%2523000000%26logoUrl%3D%26blogTitle%3DGyeongwon%2527s%2Bblog&w=2048&q=75)
1. 이미지 다운로드
docker pull tomcat:jre21-temurin-noble
2. 이미지 검색
docker images

3. 이미지 실행하기
docker run → 도커 엔진한테 컨테이너 실행 명령을 내린다.
-it 터미널 모드를 좀 열어줘!!
이미지명 → 이걸 프로세스화 시킨다.
bash (우분투를 실행시킬껀데, 그 우분투안에서 어떤 프로그램을 실행시켜줄까?)
docker run -it tomcat bash
4. 실행중인 컨테이너 확인하기
docker ps (현재 실행 중인 컨테이너만 보여줌) docker ps -a (종료된(Exited) 컨테이너도 포함됨)
5. 명령어 넣어서 실행하기
docker run -it tomcat echo hello

6. 데몬+백그라운드로 실행하기
docker run -dit tomcat
아래는 기본 cmd 이다.

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

포트 포워딩은 “밖에서 온 요청을 안으로 잘 연결해주는 터널”이다. 도커에선 컨테이너 서비스를 외부와 연결해주는 핵심이다.
포트포워딩은 왜 필요한가 ?
- 컨테이너는 외부와 단절된 격리 환경이다.
- “내부 포트”와 “외부 포트”는 다를 수 있다.
- 컨테이너 내부에서 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 뒤에 새로운 커맨드를 적으면 오버라이딩 됨.
이미지를 쓰고싶으면
- 도커허브에서 찾고
- 다운받음
- 도커 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. 도커 이미지 쓰는 일반적인 순서
- Docker Hub에서 이미지 검색
docker pull
로 다운로드 (또는 run이 알아서 pull함)
- 실행:
bash
작업하고 싶으면 →docker run -it ubuntu bash
- 백그라운드로 서비스 돌리고 싶으면 →
docker run -dit -p 8888:8080 tomcat
7. 전체 흐름 사진

Share article